所谓反射是指程序可以访问、检测和修改自身状态和行为的能力
使用此类函数需要注意区分实例属性与类属性
getattr内置函数
getattr函数用来从一个对象获取一个指定名称属性的值
getattr(obj, name)
getattr(obj, name, default)
class A:
a = 10
def print(self):
print(self.a)
a1 = A()
print(getattr(a1, 'a'))
print(getattr(a1, 'print'))
print(getattr(a1, 'show', None))
getattr(a1, 'print')()
setattr内置函数
setattr
函数用于给对象指定的属性重新设置值或者添加一个新的属性
class A:
a = 0
b = 10
def show(self):
print(self.a, self.b)
a1 = A()
a2 = A()
setattr(a1, 'a', 100)
a1.show()
a2.show()
setattr(a1, 'b', 20)
a1.show()
a2.show()
hasattr内置函数
检测对象是否具有某个指定的属性
hasattr("hello", "append")
hasattr([], "append")
hasattr({1, 2, 3}, "add")
hasattr(a1, 'show')
delattr内置函数
用来删除对象指定的属性
delattr(A, 'show')
讨论区