Re: [翻譯] Google 建議的 Python 風格指南 13

看板Python作者 (←這人是超級笨蛋)時間12年前 (2013/05/08 01:47), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1HYJvESD (Python)
文章代碼(AID): #1HYJvESD (Python)