簡體   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