[英]TypeError object takes no parameters
我只是想编写一个如何使用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__
不接受任何参数。 您在__new__
super
调用将失败:
return super(Person, cls).__new__(cls, name, age)
因为您还将name
和age
传递给object.__new__
。
您不需要将这些传递给object
; 要么一起删除__new__
定义,要么不传递任何参数给它:
return super(Person, cls).__new__(cls)
无论哪种方式,真的没有理由在这里使用__new__
,但我猜你正在试验。 如果是,请注意您也可以在super
删除Person
和cls
并使用它的零参数形式,即:
return super().__new__(cls)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.