如何将对象属性引用传递给Python函数?
解决通过字符串获取对象属性值的问题
你的代码报错原因是:在property_value函数里,o.p是试图直接访问对象o的p属性,但你传入的参数p是字符串'my_property',并非对象的属性名,所以Python找不到名为p的属性,抛出AttributeError。
要实现通过传入属性名字符串获取对象属性值,Python提供了内置函数getattr(),它可以接收对象和属性名字符串作为参数,返回对应属性的值。
修改后的代码如下:
class my_class: my_property = 0 c = my_class() print(c.my_property) def property_value(o, p): return getattr(o, p) my_property = 'my_property' print(property_value(c, my_property))
运行后会正常输出:
0 0
如果需要处理属性不存在的情况,可以给getattr()添加第三个参数作为默认值,比如:
def property_value(o, p): return getattr(o, p, '属性不存在')
这样当传入的属性名不存在时,会返回设置的默认值,而不是抛出异常。
内容的提问来源于stack exchange,提问作者Clodoaldo Pinto
相关产品推荐
相关产品推荐

