python反射

什么是反射

发射主要指程序可以访问、检测和修改它本身状态或者行为的一种能力(自省),就是通过字符串的形式导入模块,通过字符串的形式去模块中寻找指定的函数并执行

4个内置函数

getattr(strObject, attr [,default])

返回指定字符串strObject的属性或方法'attr',如果有属性则返回该属性的值,
如果有方法则返回该方法的内存地址,如果都没有报错。
如果指定了默认值且都没有,则返回该默认值。

hasattr(strObject, attr)

判断指定字符串strObject对象是否有该属性或方法'attr',返回True/False

setattr(strObject, attr, value)

为指定字符串strObject对象设置属性attr的值,如果对象已有尬属性的值则修改原值,
如果没有该属性则新增属性并赋值

delattr(strObject, attr)

删除指定字符串strObject对象的属性attr,如果没有该属性则报错。

class People:
    def __init__(self, name, age):
        self.name = name
        self.age = age


p = People("尘世风", 18)
print(hasattr(p, "name"))  # True
print(getattr(p, "age"))  # 18
print(getattr(p, "hobby", None))  # 获取不到属性,返回设定值
setattr(p, "hobby", "Python")  # 无则增,有则改
print(getattr(p, "hobby", None))  # Python
delattr(p, "hobby")
print(getattr(p, "hobby", None))  # None

# 类也可以说是对象
# print(hasattr(类,'类的属性/方法'))
print(hasattr(list,'append'))   # True
posted @ 2022-07-07 19:35  尘世风  阅读(25)  评论(0编辑  收藏  举报
*/