python面向对象----函数重写

函数重写

      定义:在自定义类内添加相应的方法,让自定义的类生成的对象(实例)像内建对象一样进行内建的函数操作

对象字符串函数重写

      repr(obj) 返回一个能代表对象的表达式字符串 eval(repr(obj)) == obj

      str(obj) 通过给定对象返回一个字符串

class MyNumber:
    def __init__(self, value):
        self.data = value


n1 = MyNumber(100)
print(repr(n1))
print(str(n1))

打印结果为:

<__main__.MyNumber object at 0x00000258490EC128>
<__main__.MyNumber object at 0x00000258490EC128>

之所以是这样的结果,是因为在父类当中有__str__这个方法,我们在类的方法中并没有看到__str__只有一个__init__初始化的方法,当前没有其实调用的是object类的__str__方法

那么我看到返回的值是这样的地址,那么如果我们不想要这么样的结果,我们就需要重写函数,去覆盖object类里的原始__str__方法

class MyNumber:
    def __init__(self, value):
        self.data = value

    def __str__(self):
        return '数字:%d' % self.data


n1 = MyNumber(100)
print(repr(n1))
print(str(n1))
返回结果为:

<__main__.MyNumber object at 0x000002492FA9C128>
数字:100

那么我们看到了print(str(n1))的结果为100,print(repr(n1))的结果并没有改变,是因为并没重写object类里的repr方法

class MyNumber:
    def __init__(self, value):
        self.data = value

    def __str__(self):
        return '数字:%d' % self.data

    def __repr__(self):
        return 'repr:%d' % self.data


n1 = MyNumber(100)
print(repr(n1))
print(str(n1))

返回结果:

repr:100
数字:100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值