如何设置/获取由
x
给定的t
属性的值?class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
x
给定的t
属性的值?class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
如果您希望将逻辑隐藏在类内部,您可能更喜欢使用类似于以下方式的通用getter方法:
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)))
输出:
Attribute value of attr1 is 1
__getattribute__
,但当尝试在该方法中获取属性值时,我一直遇到无法解决的无限循环问题。此外,请注意您也可以选择使用vars()
。在上面的示例中,您可以通过return vars(self)[varname]
替换getattr(self,varname)
,但根据What is the difference between vars
and setattr
?的回答,getattr
可能更可取。new
模块的Python 2。Python内置了函数setattr
和getattr
,可以用来设置和获取类的属性。
以下是一个简单的示例:
>>> from new import classobj
>>> obj = classobj('Test', (object,), {'attr1': int, 'attr2': int}) # Just created a class
>>> setattr(obj, 'attr1', 10)
>>> setattr(obj, 'attr2', 20)
>>> getattr(obj, 'attr1')
10
>>> getattr(obj, 'attr2')
20
df1
和一个变量x='df1'
,即将df1作为字符串存储在变量x中。我想像这样打印df的形状:getattr(x,'shape')
或者getattr('df1','shape')
。我知道这不能通过getattr实现,还有其他方法吗? - ihightowergetattr(globals()[x], 'shape')
。 - afult