我正在尝试从其类中调用属性并获取值。我理解属性是A.foo.__get__(a)
,但由于属性在类的实例中,我不确定我的a
是什么。目前,我的尝试返回对象和位置。这是有道理的,但我将如何继续,以便它返回属性的值?
class Burgers(object):
def __init__(self):
self.burger1 = self.make_burger_dict('mc')
self.burger2 = self.make_burger_dict('bk')
print self.burger1
# prints {1: <property object at 0x10d51b7e0>, 2: <property object at 0x10d51b7e0>}
# what I want {1: 'Big Mac', 2: 'Big Mac'}
@property
def bk(self):
return "Whopper"
@property
def mc(self):
return "Big Mac"
def make_burger_dict(self, key):
return {
1: vars(Burgers)[key],
2: getattr(Burgers, key),
}
x = Burgers()
我在make_burger_dict方法中尝试了3: eval("self." + key)
,并创建了所需的结果。但是,我听说要避免使用eval
,那么不使用它就可以了吗?
答案 0 :(得分:3)
我认为这就是你想要的。你不应该处理__get__
废话。这就是在课堂上创建描述符的重点; python自动处理它。
def make_burger_dict(self, key):
val = getattr(self, key)
return {1: val, 2: val}