今日内容:
关于面向对象的一些内置方法
1、__str__:在对象被打印时自动触发,可用来定义对象被打印。
注意:返回必须是一个字符串类型的值
###############################
class Foo:
def __init__(self,name,age):
self.name = name
self.age = age
def __str__(self):
return 'name:%s,age:%s'%(self.name,self.age)
obj1 = Foo('lay',37)
print(obj1)
##################################
2、__del__在对象被删除时先自动触发该方法,可以用来回收对象以外的其他相关资源,比如系统资源。
#####################################
class Foo:
def __init__(self,name,age):
self.name = name
self.age = age
self.f = open(r'a.test','r',encoding='utf-8')
def __del__(self):
self.f.close()
print('文件已关闭')
obj1 = Foo('lay',37)
print(obj1)
#####################################
3、hasattr(对象,属性):判断这个属性是否在这个对象内,存在返回True,不存在返回False
4、setattr(对象,属性,属性值):为这个对象创建一个属性
5、getattr(对象,属性,如果属性不存在设置返回值):照看这个对象的属性的属性值,不存在就返回设置的返回值,不设置返回值则报错
6、isinstance(对象,类名)判断这个对象是不是从这个类中产生的,是返回True,不是True
7、issubclass(类名1,类名2):判断类名1是否继承于类名2,是返回True,不是True
#############################################################
class Foo:
def __init__(self,name,age):
self.name = name
self.age =age
class Bar(Foo):
pass
obj1 = Foo('yxf',18)
print(hasattr(obj1,'sex'))
print(setattr(obj1,'sex','male'))
print(obj1.__dict__)
print(getattr(obj1,'age',None))
delattr(obj1,'sex')
print(obj1.__dict__)
print(isinstance(obj1,Foo))
print(issubclass(Bar,Foo))
#############################################################