本文共 1534 字,大约阅读时间需要 5 分钟。
首先把官方文档搬出来:
英文棒的小伙伴们最好是去看下官方文档,毕竟原汁原味的英文表述才最准确。
getattr()函数是Python自省的核心函数,可以把一个要访问的变量或方法,通过字符串的形式传递过去并拿到返回的值。
获取对象引用getattr
getattr用于返回一个对象属性,或者方法示例代码:
class Demo: def __init__(self): self.name = 'allen' self.age = '18' def method_one(self): print("这是 method_one 方法") return "one" def method_two(self): print("这是 method_two 方法")d = Demo()# 如果d对象中有属性name则打印self.name的值,否则打印'not find'print(getattr(d, 'name', 'not found'))# 如果d对象中有属性name则打印self.age的值,否则打印'not find'print(getattr(d, 'age', 'not found'))# 如果有方法method_one,打印其地址,否则打印defaultprint(getattr(d, 'method_one', 'default'))# 如果有方法method_one,运行函数并打印返回值,否则,打印defaultprint(getattr(d, 'method_one', 'default')())# 如果有方法method,运行函数并打印None否则打印defaultprint(getattr(d, 'method_two', 'default')())
解释一下上图的示例代码:
定义一个Demo
类,有两个变量name
和age
,还有两个方法method_one
和method_two
。method_one
方法打印一句话并返回one
这个字符串;method_two
方法打印一句话没有任何返回值; print(getattr(d, 'name', 'not found'))
:
allen
print(getattr(d, 'age', 'not found'))
:
not found
print(getattr(d, 'method_one', 'default'))
:
<bound method Demo.method_one of <__main__.Demo object at 0x10cbcb9e8>>
print(print(getattr(d, 'method_one', 'default')())
:
这是 method_one 方法
one
print(getattr(d, 'method_two', 'default')())
:
这是 method_one 方法
None
。
转载地址:http://fwwsx.baihongyu.com/