Ich versuche, eine Eigenschaft aus seiner Klasse aufzurufen und den Wert zu erhalten. Ich verstehe, dass Eigenschaften sind A.foo.__get__(a)
, aber da die Eigenschaften innerhalb der Instanz der Klasse sind, bin ich mir nicht sicher, was meine a
wäre. Momentan geben meine Versuche das Objekt und den Standort zurück. Das macht Sinn, aber wie würde ich vorgehen, damit es stattdessen den Wert der Eigenschaft zurückgibt?Aufruf des Property-Objekts aus der Klasse?
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()
ich versuchte 3: eval("self." + key)
im make_burger_dict Verfahren, und das schafft das gewünschte Ergebnis. Allerdings habe ich gehört zu vermeiden, eval
, also ist es weg, dies zu tun, ohne es zu benutzen?
Sie versuchten 'getattr (Burger, Schlüssel)' aber nicht 'getattr (Selbst, Schlüssel)'? –