python 反射
程序员文章站
2024-01-17 10:57:52
1.反射 主要是用到了4个函数( 用的最多的就是getattr()和 hasattr() ): getattr() 从xxx对象中获取到xxx属性值 hasattr() 判断xxx对象中是否有xxx属性值delattr() 从xxx对象中删除xxx属性setattr() 设置xxx对象中的xxx属性 ......
1.反射
主要是用到了4个函数( 用的最多的就是getattr()和 hasattr() ):
getattr() 从xxx对象中获取到xxx属性值
hasattr() 判断xxx对象中是否有xxx属性值
delattr() 从xxx对象中删除xxx属性
setattr() 设置xxx对象中的xxx属性为xxxx值
# 这是master.py中的内容 def chi(): print('大牛很能吃') def he(): print('大牛很能喝 ') def shui(): print('大牛很能睡 ') def play(): print('大牛很能玩 ') def work(): print('大牛很能工作 ') #调用 import master # 引用master.py print(dir(master)) while 1: content = input("请输入要测试的功能:") if hasattr(master, content): # 判断xxx对象中是否包含了xxxx xx = getattr(master, content) # 从xxx对象中获取到xxx属性值 xx() print('有这个功能') else: print('没有这个功能')
2.isinstance, type, issubclass的区别
class animal: def eat(self): print("刚睡醒吃点儿东西") class cat(animal): def play(self): print("猫喜欢玩儿") c = cat() print(isinstance(c, cat)) # c是一只猫 true print(isinstance(c, animal)) # 向上判断 true a = animal() print(isinstance(a, cat)) # false 不能向下判断 print(type(a)) # 返回 a的数据类型 <class '__main__.animal'> print(type([])) # <class 'list'> print(type(c)) # 精准的告诉你这个对象的数据类型 <class '__main__.cat'> # 判断.xx类是否是xxxx类的子类 print(issubclass(cat, animal)) # true print(issubclass(animal, cat)) # false