This question already has answers here:
Why use setattr() and getattr() built-ins?
(4个答案)
5年前关闭。
这段代码之间有任何区别,该代码使用点表示法进行属性访问:
以及下面的代码,它使用了
它们的行为对我来说似乎是相同的,但是我在某些代码中遇到了后一个示例,我很好奇为什么在这种情况下人们会选择调用
(4个答案)
5年前关闭。
这段代码之间有任何区别,该代码使用点表示法进行属性访问:
def get_foo(self):
try:
return self._attribute
except AttributeError:
self._attribute = 'something'
return self._attribute
以及下面的代码,它使用了
getattr
函数:def get_foo(self):
try:
return getattr(self, '_attribute')
except AttributeError:
self._attribute = 'something'
return self._attribute
它们的行为对我来说似乎是相同的,但是我在某些代码中遇到了后一个示例,我很好奇为什么在这种情况下人们会选择调用
getattr()
。 最佳答案
根据documentation,它们是等效的(除非提供了第三个参数以在属性不存在时抑制AttributeError
)。
我想不出有什么理由比这里的普通点表示法更喜欢getattr
。 。 。我唯一可以想到的是,如果我试图防止我的短毛猫提示protected-access
(如果您有正当的理由,最好使用编译指示禁用它),这是我可能会想使用前者的地方。 。 。
关于python - 什么时候getattr()不像正常的属性访问?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34443349/
10-12 22:00