Wie setzen / erhalten Sie die Werte von Attributen von t
gegeben durch x
?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
python
object
attributes
Nullpoet
quelle
quelle
df1
und eine Variable,x = 'df1'
dh df1 als String in var x. Ich möchte die Form von df so drucken,getattr(x, 'shape')
odergetattr('df1', 'shape')
. Ich weiß, dass dies mit getattr und anderen Methoden nicht möglich ist.Hinweis: Diese Antwort ist sehr veraltet. Dies gilt für Python 2 mit dem
new
Modul, das 2008 veraltet war .In den Funktionen setattr und getattr ist Python integriert. Womit das Attribut einer Klasse festgelegt und abgerufen werden kann.
Ein kurzes Beispiel:
quelle
Wenn Sie die Logik in der Klasse verbergen möchten, bevorzugen Sie möglicherweise eine verallgemeinerte Getter-Methode wie die folgende:
Ausgänge:
Ein anderer Ansatz, der es noch besser verbergen könnte, wäre die Verwendung der magischen Methode
__getattribute__
, aber ich bekam immer wieder eine Endlosschleife, die ich nicht lösen konnte, als ich versuchte, den Attributwert innerhalb dieser Methode abzurufen.Beachten Sie auch, dass Sie alternativ verwenden können
vars()
. Im obigen Beispiel könnten Siegetattr(self,varname)
durch tauschenreturn vars(self)[varname]
, sind abergetattr
möglicherweise entsprechend der Antwort auf Was ist der Unterschied zwischenvars
undsetattr
? .quelle