python面向对象之继承
- 继承
龙生龙,凤生凤,老鼠的儿子会打洞
- 面向对象三大特性: 封装 继承 多态
- 继承:某个类直接具备另一个类的能力(属性和方法)
格式:
class 子类名(父类名):
class Animal:
def eat(self):
print("-----吃-----")
class Dog(Animal):
pass
wang_cai = Dog()
wang_cai.eat()
- 多层继承
- 继承关系可以在多层间传递
class Animal:
def eat(self):
print("-----吃-----")
class Dog(Animal):
def bark(self):
print("-----汪汪叫------")
class XTQ(Dog):
"""哮天犬 类"""
pass
xtq = XTQ()
xtq.eat()
xtq.bark()
3.多继承
所谓多继承,即子类有多个父类,并且具有它们的特征
class Dog:
"""狗"""
def bark(self):
print("汪汪叫")
class God:
"""神仙"""
def fly(self):
print("飞一会儿")
class XTQ(Dog, God): # 多继承使用逗号隔开
pass
xiaotq = XTQ()
xiaotq.bark()
xiaotq.fly()
注意点
想一想:
如果在上面的多继承例子中,如果父类A和父类B中,有一个同名的方法,那么通过子类去调用的时候,调用哪个?
class Dog:
"""狗"""
def eat(self):
print("吃便便")
class God:
"""神仙"""
def eat(self):
print("吃蟠桃")
class XTQ(Dog, God):
# 在多继承中,调用指定父类的方法
def eat(self):
God.eat(self) # 调用God的eat方法
xiaotq = XTQ()
print(XTQ.__mro__) # 多继承中使用 mro变量来查看继承查询顺序
xiaotq.eat() # 吃蟠桃