issubclass/type/isinstance
class a: pass class b(a): pass print(issubclass(b,a))查看b是不是a的子子孙孙类/派生类
class a:
pass
b=a()
print(b,type(b)) 获取当前对象是由哪个类创建的
if type(b) == a
print(‘xxx’) 给你一个对象,判断对象是不是由某一个指定的类? type--》type(对象名)==类名
class a:
pass
b=a()
print(isinstance(b,a)) 当前对象是否由这个类组成的 检查第一个参数(对象)是否是第二个参数(类)的实例
如果 a 继承了上面的,这个b也跟着显示true
给你一个对象,判断对象是不是由某一个指定的类和其父类组成 isinstance --》 isinatance(对象名,类名) 函数和方法 对象。xxx xxx是方法 类。xxx xxx是函数 xxx xxx就是函数 from types import methodtype functiontype m方法self不用传 f函数 每个都自己传 反射 ,不是。 hasattr判断对象是否包含对应的属性 (模块名,属性(方法))判断这个模块里有没有后者, isinstance判断对象的变量类型 ( xxx ,int) xxx是不是数字(xxx,functiontype)xxx是不是函数 class 类名(object): 变量=“中” def 方法名(self): pass 对象=getattr(类名,“方法名” (或者“变量”)) 本质上就是 类名。“方法名” (或者“变量”) 根据字符串为参数,去类中寻找与之同名的成员
print(对象) 打印的是上面的 上面的是函数,下面的是方法 对象=类名() 变量=getattr(对象,“方法”)相当于对象。方法 根据字符串(第二个)为参数,去对象去对象(第一个)中寻找与之同名的成员 print(变量) 反射补充 getattr 根据字符串的形式,去对象中找成员。 hasattr 根据字符串的形式,去判断对象中是否有成员 setattr 根据字符串的形式,动态的设置一个成员(内存) delattr 根据字符串的形式,动态的删除一个成员(内存)
setattr添加成员 setattr(模块(自己写的),“新增的成员”,999) 这个是设置到内存的,在内存中这个模块加了这个成员,模块里是没有的,运行任何程序都需要给他装进内存中 模块就是对象 给这个对象新增个成员 变量=getattr(模块(自己写的),“新增的成员”) print(变量) 999 setattr 添加函数 setattr(模块(自己写的),“函数名“,lambda x:x+1) 变量=getattr(模块(自己写的),“函数名”) 变量1=变量(1) 把1传到函数里 print(变量) delattr delattr(模块(自己写的),“函数名”) 变量=getattr(模块(自己写的),‘函数名’) print(变量) 这里没有了打印不出来了 报错 class 类名(object): def __init__(self,成员): self.成员=成员 这行下面再加个 self。成员1=none 这样后面再传值,外人看知道 对象=类名(1) 成员=1 变量=getattr(对象,a1) print(变量) 变量=setattr(对象,“成员1”,2) 这个在上面self里传了个参数 print(变量) 这样也可以,但是别这么做,别人看代码的时候很是懵逼 print(callable(类,函数,对象,方法))true flase 判断他是不是可执行的