[問題] override __setattr__碰到怪狀況
我在override __setattr__時不知道為什麼沒辦法assing某個變數
錯誤訊息也很怪
>>> class pin(int):
... def __new__(cls,pin,inv,oc,out):
... i=int.__new__(cls,1<<pin)
... i.pin=pin
... i.inv=inv<<pin
... i.oc=oc<<pin
... i.out=out<<pin
... return(i)
...
>>> class port():
... OC=0
... OUT=0
... def __setattr__(self,name,value):
... # self.OC=value.oc
... # self.OUT=value.out
... print(value.out)
... self.OC=value.out
... print(value.out)
... super().__setattr__(name, value)
...
>>> P=port()
>>> M=pin(pin=0,inv=1,oc=0,out=1)
>>> P.M=M
1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 8, in __setattr__
File "<stdin>", line 7, in __setattr__
AttributeError: 'int' object has no attribute 'out'
>>>
看起來是value.out不存在,但是print(value.out)是正常的?
還是其實是super那行報的錯?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.134.33 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1608226498.A.C54.html
推
12/18 02:40,
3年前
, 1F
12/18 02:40, 1F
→
12/18 08:00,
3年前
, 2F
12/18 08:00, 2F
→
12/18 08:03,
3年前
, 3F
12/18 08:03, 3F
→
12/18 08:13,
3年前
, 4F
12/18 08:13, 4F
推
12/19 01:15,
3年前
, 5F
12/19 01:15, 5F