Como você define / obtém os valores dos atributos t
dados por x
?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
python
object
attributes
Nullpoet
fonte
fonte
df1
e uma variávelx = 'df1'
ou seja, df1 como uma string em var x. Eu quero imprimir a forma de df como este,getattr(x, 'shape')
ougetattr('df1', 'shape')
. Eu sei que isso não pode ser feito com getattr, quaisquer outros métodos.Nota: Esta resposta está muito desatualizada. Isso se aplica ao Python 2 usando o
new
módulo que foi descontinuado em 2008 .Há python construído nas funções setattr e getattr. Que pode ser usado para definir e obter o atributo de uma classe.
Um breve exemplo:
fonte
Se você deseja manter a lógica oculta dentro da classe, pode preferir usar um método getter generalizado da seguinte forma:
Saídas:
Outra abordagem que poderia escondê-lo ainda melhor seria usar o método mágico
__getattribute__
, mas eu continuava obtendo um loop infinito que não conseguia resolver ao tentar recuperar o valor do atributo dentro desse método.Observe também que você pode usar como alternativa
vars()
. No exemplo acima, você poderia trocargetattr(self,varname)
porreturn vars(self)[varname]
, masgetattr
pode ser preferível de acordo com a resposta para Qual é a diferença entrevars
esetattr
? .fonte