1, issubclass
判断前一个是不是后一个的子类,或者说是后辈
1 class Animal: 2 pass 3 class Cat(Animal): 4 pass 5 class Boshicat(Cat): 6 pass 7 8 print(issubclass(Cat,Animal)) 9 print(issubclass(Boshicat,Animal)) 10 print(issubclass(Cat,Boshicat)) 11 12 13 运行结果 14 True 15 True 16 False
2,type
type: 精准的给出对象的类
1 class Animal: 2 pass 3 class Cat(Animal): 4 pass 5 class Boshicat(Cat): 6 pass 7 8 9 c = Cat() 10 print(type(c)) 11 print(type(c) == Cat) 12 print(type(c) == Animal) 13 print(type(c) == Boshicat) 14 15 16 运行结果 17 18 <class '__main__.Cat'> 19 True 20 False 21 False
3,isinstance
isinstance:判断一个对象是不是一个类(子类的对象可以当成父类的类型来看)
1 class Animal: 2 pass 3 class Cat(Animal): 4 pass 5 class Boshicat(Cat): 6 pass 7 8 c = Cat() 9 10 print(isinstance(c,Animal)) 11 print(isinstance(c,Cat)) 12 print(isinstance(c,Boshicat)) 13 14 15 运行结果 16 17 True 18 True 19 False
4,反射
通过字符串映射或修改程序运行时的状态、属性、方法, 有以下4个方法:
hasattr(obj,name_str) 判断一个对象obj里是否有对应的name_str字符串的方法,返回一个布尔值
getattr(obj,name_str) 根据字符串去获取obj对象里的对应的方法的内存地址
setattr(obj,'y',z) 将给定对象的命名属性设置为指定的值
delattr(x, 'y') 从给定对象中删除指定的属性
我有一个master.py文件
1 master.py
2
3 name = '大牛'
4 def chi():
5 print("吃了很多")
6 def he():
7 print("喝了很多")
8 def la():
9 print("拉了很多")
10 def sa():
11 print("撒了很多")
我要在另一个文件中通过输入去调用其中的函数
1 test.py
2
3 import master
4
5 print('''
6 chi
7 he
8 la
9 sa
10 name
11 ''')
12 while 1:
13 val = input("输入操作")
14 if hasattr(master,val):
15 attr = getattr(master,val)
16 if callable(attr):
17 attr()
18 else:
19 print(attr)
来源:https://www.cnblogs.com/shuai-aoli/p/10976472.html