1

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.

 

posted @ 2019-01-28 17:31  萌哥-爱学习  阅读(935)  评论(0编辑  收藏  举报