Python 继承

Posted on 2018-12-17 21:42  缥缈映苍穹  阅读(120)  评论(0)    收藏  举报
# 子类自动拥有父类中除了私有内容外的其他所有内容
# 王思聪(熊猫TV) -> 王健林(年龄)
# 继承目的: 对父类进行扩展

class Foo:
    def getMoney(self):
        print("拿钱")
#

class Bar(Foo):
    pass
#
#
b = Bar()
b.getMoney() # 此时调用的是父类中的方法

# 当出现xxx是一种yyy类型的东西. 可以使用继承关系
# 猫是一种动物
class Animal:
    def dong(self):
        print("动物会动, 顾雍")
#
class Cat(Animal): # 子类其实是对父类的一种扩展
    def catchMouse(self):
        print("猫很皮, 抓老鼠")

c = Cat()
c.dong()
c.catchMouse()

a = Animal() # 父类的对象不能执行子类中的功能
a.dong()
a.catchMouse() # 创建的是动物. 动物不能执行抓老鼠



class Animal:
    def dong(self):
        print("动物会动, 顾雍")
#
class Cat(Animal): # 子类其实是对父类的一种扩展
    def dong(self): # 子类中写了和父类一模一样的方法. 这个叫方法的覆盖, 重写
        print("猫上蹿下跳")

    def catchMouse(self):
        print("猫很皮, 抓老鼠")

c = Cat() # 创建的是猫.
c.dong()  # 类中的方法的查询顺序. 先找自己, 然后再找父类


# python支持多继承
class Foo1:
    def getMoney(self):
        print('给你个大嘴巴子')

    def play(self):
        print("玩儿")

class Foo2:
    def getMoney(self):
        print('给多点儿')

class Bar(Foo1, Foo2): # 离当前类最近的是亲爹, 后面的是干爹.
    pass

b = Bar()  # 就近原则, MRO的C3算法
b.getMoney() # Foo2里的