您在Python中使用__getattr__
的频率,而不是常规方法吗?
哪一项会被认为更好?
class A:
def __getattr__(self, attribute):
if attribute == "spam":
return self._spam * 100
elif attribute == "eggs":
return "fried" + self._eggs
raise AttributeError
或
class B:
def get_spam(self):
return self._spam * 100
def get_eggs(self):
return "fried" + self._eggs
答案 0 :(得分:3)
__getattr__
或访问者方法
class B(object):
@property
def spam(self):
return self._spam * 100
@property
def eggs(self):
return "fried" + self._eggs
仅使用__getattr__
来支持动态属性,其中属性的数量和名称在类定义时是未知的。