zoukankan      html  css  js  c++  java
  • 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.
  • 相关阅读:
    JavaScript -- BATweb笔试面试
    1--html属性
    0--node安装
    1-- express
    lsof命令
    1--字符串和数组的指向问题
    19--复杂链表的复制。
    18--二叉树中和为某一值的路径
    剑指offer——64和为s的数字
    剑指offer——04二维数组中的查找
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/10331110.html
Copyright © 2011-2022 走看看