python学习之特殊属性和魔术方法(续)

Ursula ·
更新时间:2024-09-20
· 685 次阅读

反射

运行时:区别于编译时,指的是程序被加载到内存中执行的时候。

反射: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



python学习 魔术 方法 属性 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号