How do you set/get the values of attributes of t
given by x
?
class Test:
def __init__(self):
self.attr1 = 1
self.a
If you want to keep the logic hidden inside the class, you may prefer to use a generalized getter method like so:
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
def get(self,varname):
return getattr(self,varname)
t = Test()
x = "attr1"
print ("Attribute value of {0} is {1}".format(x, t.get(x)))
Outputs:
Attribute value of attr1 is 1
Another apporach that could hide it even better would be using the magic method __getattribute__
, but I kept getting an endless loop which I was unable to resolve when trying to get retrieve the attribute value inside that method.
Also note that you can alternatively use vars()
. In the above example, you could exchange getattr(self,varname)
by return vars(self)[varname]
, but getattr
might be preferable according to the answer to What is the difference between vars and setattr?.