面向对象相关内置函数
isinstance判断一个对象是否是一个类中的对象
class A: role = ‘A‘ def __init__(self,name): self.name = name def walk(self): print(‘A is walking‘) a = A(‘少林寺‘) print(isinstance(a,A)) #判断对象a是否是类A中的对象,返回布尔值
issubclass判断一个类是否是类中的子类 返回布尔值
class Foo: print(‘我是父类‘) class Son1(Foo): print(‘我是子类1‘) class Son2(Foo): print(‘我是子类2‘) print(issubclass(Son1,Foo)) print(issubclass(Son2,Foo)) 判断一个类(Son1或者Son2)是否是类(Foo)中的子类 返回布尔值
反射
反射的概念
所谓的反射其实就是用字符串类型的名字 去操作 变量
反射的作用(优势)
反射提供的方法
反射提供了4个内置函数分别为:getattr、hasattr、setattr、delattr 获取成员、检查成员、设置成员、删除成员下面逐一介绍先看例子:
getattr获取成员
class Foo(object): def __init__(self): self.name = ‘abc‘ def func(self): return ‘ok‘ obj = Foo() #获取成员 ret = getattr(obj, ‘func‘)#获取的是个对象 r = ret() print(r)
hasattr检查成员
class Foo(object): def __init__(self): self.name = ‘abc‘ def func(self): return ‘ok‘ obj = Foo() #检查成员 ret = hasattr(obj,‘func‘)#因为有func方法所以返回True print(ret)
setattr设置成员
class Foo(object): def __init__(self): self.name = ‘abc‘ def func(self): return ‘ok‘ obj = Foo() #设置成员 print(obj.name) #设置之前为:abc ret = setattr(obj,‘name‘,19) print(obj.name) #设置之后为:19
delattr删除成员
class Foo(object): def __init__(self): self.name = ‘abc‘ def func(self): return ‘ok‘ obj = Foo() #删除成员 print(obj.name) #abc delattr(obj,‘name‘) print(obj.name) #报错