Python之函数重写(系统函数的重写,自定义函数的重写)

系统函数的重写

  • __str__:在调用print打印对象的时候,会被自动调用,默认返回的对象的地址【给程序员使用的】
  • __repr__:在Python解释器中调用的方法【给计算机使用的】
#系统函数的重写
class Animal(object):
    def __init__(self,name,age,height):
        self.name = name
        self.age = age
        self.height = height

    #__str__:获取一个对象的字符串表示形式
    def __str__(self):
        return "%s-%d-%f" % (self.name,self.age,self.height)
    #注意:如果在直接访问对象的时候,想要获取对象相关的成员变量的值,则直接重写__str__函数
    
    def __repr__(self):
        return "hello"

#创建对象【实例化对象】
a = Animal("大黄",10,40.0)
print(a)            #大黄-10-40.000000
print(a.__str__())     #大黄-10-40.000000
print(a.__repr__())     #hello
print(a.name,a.age,a.height)        #大黄 10 40.0

总结:

  1. __str__和__repr__都未被重写的时候,直接访问对象默认调用的是__str__,但是此时__str__和__repr__返回的都是对象的地址

  2. __str__和__repr__都被重写的时候,直接访问对象默认调用的是__str__,返回的是和成员有关的字符串

  3. __str__被重写,__repr__未被重写,直接访问对象调用的是__str__

  4. __repr__被重写,__str__未被重写,直接访问对象调用的是__repr__

自定义函数的重写 

  • 自定义函数的重写:将父类中需要被重写的函数的实现部分重新实现一次
#自定义函数的重写
#父类
class Animal(object):
    def run(self):
        print("animal running-----")

#子类
class Cat(Animal):
    def run(self):
        print("cat running-----")
        
class Dog(Animal):
    pass

#子类中的函数将父类中的函数覆盖掉【就近原则】
c = Cat()
c.run()           #cat running-----  子类中的run

d = Dog()
d.run()           #animal running-----  父类中的run

注意:当一个父类有多个子类的时候,如果其中的某个子类调用父类中的函数,发现满足不了需求,则需要进行重写。但是,其他的子类还可以调用父类中的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值