from questionなぜこれらの 2 つのケースで object.__new__ の動作が異なるのか、またはむしろどのように機能するのか
著者は理由ではなく、方法に関心がありました。
特に、その理由を理解したいと思います。
object.__init__
の代わりに印刷されたパラメーターをとらないのはなぜですかobject.__new__ (in testclass1)
testclass3 でエラーが発生しないのはなぜですか? (self 以外の引数を取らないため)
コード
>>> 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>
>>> 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>