作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [翻译] Google 建议的 Python 风格指南 13
时间Wed May 8 01:47:56 2013
※ 引述《sandwichC (没回应=挂站)》之铭言:
1F:推 timTan:大推,其待整理成完整文章 05/08 00:33
2F:→ timTan:不过间接呼较也太折磨人了 05/08 00:34
3F:→ timTan:错字...呼叫! 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)
4F:推 timTan:这样写的话的确简单且直觉多了~ 05/09 20:34