运行时:区别于编译时,指的是程序被加载到内存中执行的时候。
反射:python中,能够通过一个对象,找出其type,class,attribute或method的能力,成为反射或自醒。
具有反射能力的函数type(),isinstance(),callable()(查看对象能否被调用),dir(),getattr()
内建函数
object 可以是类或实例
语法格式:
getattr(object,name[,default]) : 通过name 返回object的属性值,当属性不存在时,将使用default返回,如果没有default,则抛出attributeError,name 必须位字符串
setattr(object,name,value) object 的属性存在,则覆盖,若不存在,则新增。
hasattr(object,name) 判断对象是否有这个名字属性,name必须时字符串
class A:
x = 10
def __init__(self):
self.x = 5
setattr(A, 'y', 20) # 动态添加类属性位y=20
print(A.__dict__) # 打印属性信息列表
a = A()
setattr(a, 'z', 100) # 实例动态增加属性
print(getattr(A, 'y')) # 查看增加的属性是否存在
print(getattr(A, 'x')) # 定义属性是否存在
print(getattr(a, 'y')) # 查看实例中是否存在该属性
print(a.__dict__) # 查看实例属性信息中是否具有'z'属性
print(A.__dict__) # 打印属性信息列表,此处查看当实例属性信息增加后,类属性信息是否增加
if hasattr(a, 'z'):
print("{} 函数存在此属性 {}".format('a', 'z'))
原创文章 105获赞 10访问量 2977
关注
私信
展开阅读全文
作者:qq_29983883