[問題] 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