如何从列表中调用Python类实例并按名称选取类属性?
通过属性名称字符串获取Python类的属性值
嘿,这事儿超简单!Python内置的getattr()函数就是专门干这个的——它能接收对象和属性名称字符串,直接返回对应的属性值。
先看你给出的初始代码,要实现用list[0]获取x.one,直接这么写就行:
class example(object): def __init__(self): self.one = "1" self.two = "2" x = example() attr_list = ["one", "two"] # 建议别用list当变量名,这是Python内置类型,容易冲突 # 获取x.one的值 result = getattr(x, attr_list[0]) print(result) # 输出:1
这里特意提一句:尽量别用list作为变量名,它是Python的内置类型,这么做会覆盖掉原本的功能,后续容易出奇怪的问题。
再看你给出的可行示例,其实原理完全一致——在类的方法里用getattr(self, 字符串属性名),这里的self就是当前类的实例,和外面的x是同一个概念,所以能顺利拿到self.two的值。
如果担心属性不存在会报错,还可以给getattr()加第三个参数作为默认值,比如:
# 如果属性不存在,返回预设的默认值 result = getattr(x, "three", "不存在这个属性") print(result)
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

