Как вы устанавливаете / получаете значения атрибутов t
данного x
?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
python
object
attributes
Nullpoet
источник
источник
df1
и переменная,x = 'df1'
т.е. df1, как строка в var x. Я хочу напечатать форму DF, как это,getattr(x, 'shape')
илиgetattr('df1', 'shape')
. Я знаю, что это не может быть сделано с getattr, любыми другими методами.getattr(globals()[x], 'shape')
Примечание: этот ответ очень устарел. Это относится к Python 2 с использованием
new
модуля, который устарел в 2008 году .В Python встроены функции setattr и getattr. Который может использоваться для установки и получения атрибута класса.
Краткий пример:
источник
Если вы хотите сохранить логику скрытой внутри класса, вы можете предпочесть использовать обобщенный метод получения, например так:
Выходы:
Еще одно устройство, которое могло бы скрыть это еще лучше, - это использовать магический метод
__getattribute__
, но я продолжал получать бесконечный цикл, который не смог разрешить, пытаясь получить значение атрибута внутри этого метода.Также обратите внимание, что вы можете использовать в качестве альтернативы
vars()
. В приведенном выше примере, вы можете обменятьgetattr(self,varname)
наreturn vars(self)[varname]
, ноgetattr
может быть предпочтительным в соответствии с ответом на В чем разница междуvars
иsetattr
? ,источник