我只是想编写一个如何使用super
和__new__
的代码。代码如下:
class Person(object):
def __new__(cls, name, age):
print('__new__called')
return super(Person, cls).__new__(cls, name, age)
def __init__(self, name, age):
print('__init__called')
self.name = name
self.age = age
def __str__(self):
return('<Person:%s(%s)>'%(self.name, self.age))
if __name__ == '__main__':
piglei = Person("piglei", 24)
print(piglei)
Python提出了一个TypeError
,并对第4行object() takes no parameters
进行了说明。你知道吗
object.__new__
不接受任何参数。您的super
调用__new__
将失败:因为你也把
name
和age
传递到object.__new__
。你知道吗您不需要将它们传递给
object
;或者将__new__
定义一起删除,或者不向其传递任何参数:不管怎样,这里确实没有理由使用
__new__
,但我猜你在做实验。如果是,请注意,也可以在super
中删除Person
和cls
,并使用它的零参数形式,即:相关问题 更多 >
编程相关推荐