内置的类方法和内置函数之间关系紧密
__str__ #一定return一个字符串
class A:
def __str__(self):
return "A‘s object"
a = A()
print(str(a)) #object里有一个__str__,一旦调用,返回调用这个方法的对象的内存地址
print(a) #A‘s object打印对象的时候就是调用这个对象的a.__str__方法
%s str() print实际上都是调用__str__方法,必定返回字符串数据类型
###############################################
def __str__(self)
return "Teacher‘s object : %s"%self.name
###############################################
__repr__
print(repr(1)) #1
print(repr(‘1‘)) #‘1‘
print(1,‘1‘) #1 1
\是取消转义\\n
###############################################
%r和repr()走的都是__repr__方法
def __repr__(self):
return str(self.__dict__)
print(repr(a))
print(‘%r‘%a) #结果同上,打印字典
repr是str的备胎,反之不行(没有__str__会调用__repr__)
如果只能实现一个,那么优先实现repr方法
##############################################
内置方法有很多,不一定全都在object中,所有对象都有的属性才会被object收录
比如__len__
def __len__(self):
return len(self.student)
实例化后调用len()返回班级学生数量
##################################################
class A:
def __del__(self): #析构函数:在删除一个对象之前,进行一些收尾工作,比如关闭文件
print(‘删掉啦!‘)
a = A()
del a
print(a) #既执行了这个方法,又删除了变量,引用计数为1,为0的时候自动删除a
##################################################
class A:
def __call__(self):
print(‘执行我啦!‘)
a = A()()
a() #相当于执行了__call__方法,如果没有会报错
原文:https://www.cnblogs.com/farion/p/9932469.html