【发布时间】:2018-01-22 20:02:24
【问题描述】:
我需要重写__getattr__ 方法,但是如何在那里获取属性?
我可以像这样从__getattr__ 方法访问属性:
class Someclass:
@property
def some_prop(self):
return something
def __getattr__(self, attr_name):
return self.__dict__[attr_name]
但是attr_name == 'some_prop'不行,怎么访问 some_prop 那里?
编辑:这不是关于如何解决 '2+2 = x' 的问题,这是关于 python 中元编程的问题,提供的示例只是为了说明问题 p>
【问题讨论】:
-
属性属于该类,因此您还必须检查
type(self).__dict__以获取可能的属性 -
但是既然这已经是默认行为,你为什么要这样做?
-
@DanielRoseman 因为我需要重写它来执行一些复杂的元编程,提供的示例只是为了这个问题而这似乎不是默认行为,因为没有 'some_prop ' 在 .__dict__