class speciallist(list):
def __new__(self):
return self
def custommethod(self,param):
#do stuff
return value
listesp = speciallist()
listesp.custommethod(param)
我得到“未绑定的方法custommethod()必须使用speciallist实例作为第一个参数调用”
我以为它会从类中调用该方法,为什么会这样做?
答案 0 :(得分:5)
这是一个鬼鬼祟祟的人。简短回答,从您的定义中删除__new__
方法。
__new__
method是一个类方法,因此它将类而非实例作为其第一个参数。它旨在创建一个实例(可能是另一个类)并返回它。你只是简单地返回类本身,而不是它的实例。 Python允许你从那里调用custommethod
,但它没有绑定到实例,所以它不会自动将self
作为第一个参数插入。
要设置实例,请使用__init__
方法(将self
作为其第一个参数,但不返回任何内容。)