【发布时间】:2017-08-05 01:41:24
【问题描述】:
我有多个使用单个变量的函数,这个变量的计算成本很高,所以我不想重复这个。我有两种简单的建议方法来做到这一点,并且想知道您觉得哪个更“pythonic”或更好的方法。
class A:
def __init__(self):
self.hasAttr = False
def compute_attr(self):
self.attr = 10
self.hasAttr = True #for func2 only
def func1(self):
try:
print self.attr == 10
except AttributeError:
self.compute_attr()
self.func1()
def func2(self):
if not self.hasAttr: self.compute_attr()
print self.attr == 10
a = A()
a.func1()
a.func2()
func1 使用一个简单的尝试,除了在这种情况下捕获 AttributeError 并计算属性。 func2 使用存储的布尔值来检查计算是否已完成。
是否有任何理由认为一种方法优于另一种方法?此外,在 func2 中定义一个进行检查的装饰器是否有任何意义?
感谢您的帮助。
【问题讨论】:
-
注意Python有一个内置的
hasattr -
谢谢大家,大家都很有帮助(不知道我怎么错过了
hasattr内置)
标签: python methods python-decorators