如何通过变量名打印类实例中已存在的变量?
问题解决
错误原因
- 调用
m.d('john')触发AttributeError:方法d里写了print(self.x),但self(实例对象)并没有x这个属性,参数x是传入的字符串'john',并非实例的属性。 - 调用
m.d(john)触发NameError:john未被定义为变量,直接引用会导致未定义错误。
修改方案
根据不同需求,有两种常见修改方式:
方式一:传入属性名字符串,打印对应实例属性值
如果想通过传入'john'这类属性名字符串,打印实例的self.john属性值,可使用getattr()方法动态获取实例属性:
class abc(): def __init__(self): self.john = 'a' self.mike = 'b' def d(self, x): # 动态获取实例的对应属性并打印 print(getattr(self, x)) m = abc() m.d('john') # 输出: a
方式二:直接传入要打印的值
如果想直接传递要打印的内容,修改方法d直接打印参数x,调用时传入实例属性或具体值即可:
class abc(): def __init__(self): self.john = 'a' self.mike = 'b' def d(self, x): print(x) m = abc() m.d(m.john) # 输出: a m.d('b') # 输出: b
内容的提问来源于stack exchange,提问作者MuGa
相关产品推荐
相关产品推荐

