1、issubclass用法
class Base(object): pass class Foo(Base): pass class Bar(Foo): pass print(issubclass(Bar,Base)) #检查第一个参数是否是第二个参数的 子子孙孙类
2、type用法
class Foo(object): pass obj = Foo() print(obj,type(obj)) #获取当前对象是由那个类创建。
3、isinstance用法
class Base(object): pass class Foo(Base): pass obj = Foo() print(isinstance(obj,Base)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
4、查看方法和函数
from types import MethodType,FunctionType def check(arg): """ 检查arg是方法还是函数? :param arg: :return: """ if isinstance(arg,MethodType): print('arg是一个方法') elif isinstance(arg,FunctionType): print('arg是一个函数') else: print('不知道是什么')
5、反射
getattr # 根据字符串的形式,去对象中找成员。 hasattr # 根据字符串的形式,去判断对象中是否有成员。 setattr # 根据字符串的形式,动态的设置一个成员(内存) delattr # 根据字符串的形式,动态的删除一个成员(内存)
应用
class Account(object): def login(self): print("登录") def logout(self): print("登出") def register(self): print("注册") def run(self): choice_list = ["login","logout","register"] print(''' 输入要执行的功能 1、登录 2、登出 3、注册 ''') choice = int(input("输入选择的序号 : ")) fun_name = choice_list[choice - 1] func = getattr(self,fun_name) func() obj = Account() obj.run()