1.​​__str__​

首先介绍​​__str__​

class Students(object):
def __init__(self, *args):
self.names = args# def __str__(self):
#   return str(self.names)
# __repr__ = __str__
ss = Students('hyq','ysy')
ss

>>><__main__.Students at 0x2075a779828>

打印类对象显示的是对象的内存地址,下面重构​​__repr__​​​和​​__str__​​方法

再看:

class Students(object):
def __init__(self, *args):
self.names = argsdef __str__(self):
return str(self.names)
# def __repr__(self):
# return str(self.names)
ss = Students('hyq','ysy')
ss

>>><__main__.Students at 0x2075a78a860>
class Students(object):
def __init__(self, *args):
self.names = args# def __str__(self):
# return str(self.names)
def __repr__(self):
return str(self.names)
ss = Students('hyq','ysy')
ss

>>>('hyq', 'ysy')

可以看到,重构​​__repr__​​​方法后,直接输出对象,能够按照​​__repr__​​中定义的格式进行显示;

而重构​​__str__​​​方法后,直接输出对象,显示的是对象的内存地址,并不是​​__str__​​定义的格式

当然,用print都能够显示​​__repr_​​​和​​__str__​​定义的格式

class Students(object):
def __init__(self, *args):
self.names = args# def __str__(self):
#   return str(self.names)
def __repr__(self):
return str(self.names)
ss = Students('hyq','ysy')
print(ss)

>>>('hyq','ysy')

————————————————————————————————————————————分割线————————————————————————————————————
class Students(object):
def __init__(self, *args):
self.names = argsdef __str__(self):
return str(self.names)
# def __repr__(self):
# return str(self.names)
ss = Students('hyq','ysy')
print(ss)


>>>('hyq','ysy')

注意:

在代码中一般写成:

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:711312441
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def __str__(self):
return str(self.names)
__repr__ =

2.​​__len__​

如果一个类表现得像一个list,要获取有多少元素,就得用len()函数

要让len()函数正常工作,类必须提供一个特殊方法__len__(),返回元素的个数

class Students(object):
def __init__(self, *args):
self.names = args
def __len__(self):
return len(self.names)

ss = Students('hyq','ysy')
print(len(ss)


>>>2