反射(重点)
1. isinstance, type, issubclass
isinstance: 判断你给对象是否是xx类型的. (向上判断)
type: 返回xxx对象的数据类型
issubclass: 判断xxx类是否xxx的子类
2. 如何区分方法和函数(代码)
在类中:
实例方法
如果是 类名.方法 是函数
如果是 对象.方法 是方法
类方法:
都是方法
静态方法:
都是函数
from types import MethodType, FunctionType
isinstance()
3. 反射(重要)
一共就4个函数
attr: attribute
getattr() (重要)
从xxx对象中获取到xxx属性值
hasattr() (重要)
判断xxx对象中是否有xxx属性值
这个代码实在是非常的重要
class Person: @classmethod def chi(cls): print("你也太能吃了吧") @classmethod def he(cls): print("你也太能喝了吧") while 1 : a = input("请输入你要查找的功能:") if hasattr(Person,a): x = getattr(Person,a) #用 getattr 拿类中的类方法时,得到的x 相当于创建了Person对象且拿到了方法. print(x) # 打印就能看到 x 是得到方法 几乎等同于 x = Person.a x() # x() 就相当于 x() = Person.a() print("有这个功能") else : print("没有这个功能")
delattr()
从xxx对象中删除xxx属性
setattr()
设置xxx对象中的xxx属性为xxxx值