super函数的用法

 

1.创建一个类.

# 1.创建一个类
class Bird:
    def __init__(self):
        self.hungry =True

    def eat(self):
        if self.hungry:
            print("Ahhhhh")
            self.hungry=False
        else:
            print("No Thanks.")


#实例化.
b= Bird()

#调用方法.打印的结果为:Ahhhhh
b.eat()

#再一次调用eat方法.打印结果:No Thanks.
b.eat()

 

2. 创建一个子类.

#2. 创建一个子类.
class SongBird(Bird):
    def __init__(self):
        self.sound ="Squawk!"

    def sing(self):
        print(self.sound)

#实例化
sb =SongBird()

#调用方法,打印结果为:Squawk!
sb.sing()

#调用eat方法,报错.
sb.eat()

#为什么报错, SongBird 没有属性Hungry ,SongBird重写了构造函数,但是新的构造函数没有任何初始化属性hungry.
# 解决办法1.调用未关联的超类构造函数
#        2. 使用super方法.

 

3.子类的解决办法

#3. 子类的解决办法:
class SongBird(Bird):
    def __init__(self):
        # Bird.__init__(self) #1. 调用超类构造函数.
         super().__init__()  #2. 通过super方法调用.
        self.sound= "squawk!"

    def sing(self):
        print(self.sound)

sb =SongBird()
sb.sing() #squawk!
sb.eat() #Ahhhhh
sb.eat()  #No Thanks.

 

转载于:https://www.cnblogs.com/mengbin0546/p/10331110.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值