1,isinstance()
举个例子:
class Foo:
def name(self):
self.name = name
obj = Foo()
print(obj,Foo) #判断obj是不是Foo的对象
输出:True
2,issubclass()
class Foo:
pass
class Bar(Foo):
pass
print(issubclass(Foo,Bar)) # 判断Foo是不是Bar的子集
输出;True
3,反射的四个函数:
1>hasattr()
class Foo:
name = 'name'
print(hasattr(obj,'name')) # obj中是否有name属性
输出:True
2>getattr()
class Foo:
name = 'lili'
print(getatter(obj.'name')) # obj.name输出
输出:lili
3>setattr()
class Foo:
name = 'lili'
print(setattr(obj,'name','LILI')) # 把obj中的name改为LILIL
输出:LILI
4>delattr(obj,'name')
class Foo:
name = 'lili'
print(delattr(obj,'name')) #把对象中的'name'删除
4,对象内部带有的函数,会自动触发
__str__:在对象被打印时自动触发,可以用来定义对象被打印时输出的信息
注意:必须返回一个字符串类型的值
class People:
def __init__(self,name,age):
self.name = name
self.age = age
def __str__(self):
return "<name:%s age:%s>" %(self.name,self.age)
obj1 = People('lili',18)
print(obj1) # print(obj1.__str__())自动打印的是__str__的返回值
__del__:在对象被删除时先自动触发该方法,可以用来回收对象外其他相关资源,比如系统资源
class Foo:
def __init__(self,x,filepath,encoding='utf-8')
self.x = x
self.f = open(filepath,'rt',encoding=encoding)
def __del__(self):
print('runing.....')
self.f.closs() # 回收对象关联的其他资源
obj = Foo(1,'a.txt')