PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Python
[問題] @property
作者:
tsaiminghan
(tsaiminghan)
2019-07-26 14:44:29
我在class中使用@property, 但是log不會印,應該沒有被呼叫到
問題看起來跟tkinter.Frame有關,使用class item(object)就
可以正常使用,請問不會動的原因和該如何修改?謝謝
(使用python2.7)
class item(tkinter.Frame):
@property
def level(self):
print 'get property level'
return self._level
@level.setter
def level(self, value):
print 'set property level:', value
self._level = value
作者:
somoskylin
(八七booboo)
2019-07-26 15:33:00
他不是函式吧……
作者:
tsaiminghan
(tsaiminghan)
2019-07-26 15:59:00
我改一下,總之就是不會被叫到
作者:
yushes920179
(樂冰)
2019-07-26 18:49:00
撞名了?
作者:
s860134
(s860134)
2019-07-26 23:04:00
最粗淺的原因是因為 tkinter.Frame 沒有繼承到 object也就是他是所謂的 old-style/classic classes實際上是 item 和他的父類別都找不到 __setattr__item 的實例就會把 instance.__dict__ 裡面加上 "level"
作者:
thefattiger
(LT)
2019-07-27 00:59:00
不要再用Python2了
作者:
s860134
(s860134)
2019-07-27 11:23:00
目前想到的方法 1. 複寫 item class __setattr__2. 直接讓 item 用多重繼承 object...不過 2. 會有甚麼副作用 可能要看一下多重繼承XD剛看了一下: 文件上有寫:
https://bit.ly/2Y8jIjX
看這個第二段的最後一句: "Note that descriptors are""only invoked for new style objects or classes"所以你要做的事情,要嘛讓他是隻鴨子,或是讓他像隻鴨子
作者:
tsaiminghan
(tsaiminghan)
2019-07-27 18:46:00
謝謝,我會用settatr去試試看。
繼續閱讀
Re: [問題] 新手學python想抓網頁資料
alvinlin
[問題] 掌握 python
plsmaop
[問題] 新手學python想抓網頁資料
yeeche
[問題] python基礎課程詢問
cloud812016
[問題]請問週期曲線的高底起伏大小
nicha115
Re: [問題] 這問題提該怎解決
sating00
[問題] 字串轉碼問題
tg70197
Re: [問題] 這問題提該怎解決
papple23g
[問題] 這問題提該怎解決
spong
[問題] 新手解LeetCode請益
bbb654123
Links
booklink
Contact Us: admin [ a t ] ucptt.com