[问题] class.__new__ 使用疑问

楼主: papple23g (逆道者)   2018-12-09 23:52:33
今天在网络上查到
想要让class物件直接回传东西,可以用__new__的方法来达成
不过使用了之后发现,在该class下面写的函数都会失效
以下是范例程式(使用Python2):
class MyList(object):
def __new__(cls,input_list):
return input_list
def __init__(self,input_list):
self.input_list=input_list
def Sum(self):
return sum(self.input_list)
li=MyList([1,2,3])
print li # [1, 2, 3]
print li.Sum # AttributeError
请问该如何改写才正确呢?
谢谢
作者: ThxThx (洗洗睡)   2018-12-10 00:07:00
把__new__和__init__想成是初始化物件的不同阶段通常是因为继承然后又想修改derived class的行为大部分的情况用到__new__是anti pattern至于改写,你没有说明你期待的功能是什么?抱歉我前面说错 修改回传instance的行为 但通常跟继承有关你想做的叫built-in types subclassinghttps://stackoverflow.com/q/14484749

Links booklink

Contact Us: admin [ a t ] ucptt.com