反射(重点)
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值
浙公网安备 33010602011771号