Python バージョン: "'2.7.3 (デフォルト、2013 年 4 月 10 日、06:20:15) \n[GCC 4.6.3]'"
私はこれを持っています:
>>> class testclass1(object):
... pass
...
>>> class testclass2(object):
... def __init__(self,param):
... pass
...
>>> a = object.__new__(testclass1, 56)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object.__new__() takes no parameters
>>> b = object.__new__(testclass2, 56)
>>> b
<__main__.testclass2 object at 0x276a5d0>
もっと楽しい!上記の testclass1 の結果と比較してください。
>>> class testclass3(object):
... def __init__(self):
... pass
...
>>> c = object.__new__(testclass3, 56)
>>> c
<__main__.testclass3 object at 0x276a790>
>>> c1 = object.__new__(testclass3)
>>> c1
<__main__.testclass3 object at 0x276a810>
私の質問は、これら 2 つのケースで(理由ではなく)どのように異なる動作をするかです。object__new__
また、最初のケースではエラーが誤解を招く可能性があることに注意してください。2 番目のケースでobject.__new__
は引数を取ることになるからです。