繁体   English   中英

TypeError 对象不带参数

[英]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)

因为您还将nameage传递给object.__new__

您不需要将这些传递给object 要么一起删除__new__定义,要么不传递任何参数给它:

return super(Person, cls).__new__(cls)

无论哪种方式,真的没有理由在这里使用__new__ ,但我猜你正在试验。 如果是,请注意您也可以在super删除Personcls并使用它的零参数形式,即:

return super().__new__(cls)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM