Jak ustawić / uzyskać wartości atrybutów t
podanych przez x
?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
python
object
attributes
Nullpoet
źródło
źródło
df1
i zmienną,x = 'df1'
tj. df1 jako łańcuch w var x. chcę wydrukować kształt df w ten sposóbgetattr(x, 'shape')
lubgetattr('df1', 'shape')
. Wiem, że nie można tego zrobić za pomocą getattr ani żadnych innych metod.Uwaga: ta odpowiedź jest bardzo nieaktualna. Dotyczy to Pythona 2 przy użyciu
new
modułu, który był przestarzały w 2008 roku .Istnieją wbudowane funkcje Pythona setattr i getattr. Które mogą służyć do ustawiania i pobierania atrybutu klasy.
Krótki przykład:
źródło
Jeśli chcesz zachować logikę ukrytą w klasie, możesz preferować użycie uogólnionej metody pobierającej, takiej jak ta:
Wyjścia:
Innym rozwiązaniem, które mogłoby to jeszcze lepiej ukryć, byłoby użycie metody magicznej
__getattribute__
, ale ciągle otrzymywałem nieskończoną pętlę, której nie mogłem rozwiązać, próbując pobrać wartość atrybutu w tej metodzie.Pamiętaj również, że możesz alternatywnie użyć
vars()
. W powyższym przykładzie możesz wymienić zagetattr(self,varname)
pomocąreturn vars(self)[varname]
, alegetattr
może być preferowane zgodnie z odpowiedzią na pytanie Jaka jest różnica międzyvars
isetattr
? .źródło