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. 创建一个子类.
#. 创建一个子类.
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.调用未关联的超类构造函数
# . 使用super方法.
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.