Re: [翻譯] Google 建議的 Python 風格指南 13
※ 引述《sandwichC (沒回應=掛站)》之銘言:
推
05/08 00:33,
05/08 00:33
→
05/08 00:34,
05/08 00:34
→
05/08 00:35,
05/08 00:35
其實改用 property decorator 就可以防呆了
沿用之前的例子, 改用 decorator
(1) Subclass 複寫了 getter 的 method, 卻沒有把它變成 property
class Foo(object):
@property
def var(self):
return 10
class Bar(Foo):
def var(self):
return 20
bar = Bar()
print bar.var # <bound method Bar.var of <__main_.Bar object ...
# Obviously doesn't make sense
(2) 使用間接呼叫
class Foo(object):
def _get_var(self):
return 10
@property
def var(self):
return self._get_var()
class Bar(Foo):
def _get_var(self):
return 20
bar = Bar()
print bar.var # 20
(3) Subclass 也加上 property
class Foo(object):
@property
def var(self):
return 10
class Bar(Foo):
@property
def var(self):
return 20
bar = Bar()
print bar.var # 20
使用新的 decorator 只要注意一件事情
就是 override property method 時也要放 decorator
其實舊方法也是一樣
只要在 override 時重新產生 property(方法三)基本上就 OK
如果你只想複寫 getter/setter/deleter 其中之一時, 舊方法會有點醜
不過做這種事情通常也不太合理
--
╱ ̄ ̄ ̄╲
▏◢█◣ ▏
︻█︻█ ▏ 成龍表示: 是喔...
′/ ‵ ▏
╰╯ █╱
ψQSWEET ◥︶█◤
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.81.146
※ 編輯: uranusjr 來自: 114.32.81.146 (05/08 01:48)
推
05/09 20:34, , 1F
05/09 20:34, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章