python特殊函数__str__、__repr__和__len__

本文介绍了Python中如何通过定制__str__和__len__等方法来改变类实例的行为,包括实例的字符串表示形式以及如何实现对类实例长度的计算。

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')

注意:

在代码中一般写成:

def __str__(self):
        return str(self.names)
__repr__ = __str__

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

 

转载于:https://www.cnblogs.com/yqpy/p/9286047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值