具体可以看下面的【不使用继承、使用继承的区别】
class Parent: pass class Child(Parent): pass
所有类的都有一个共同父类,就是 object,默认会继承它,写或不写都一样
class Parent: pass class Parent(object): pass
有一个动物类、狗类、猫类
# 不使用继承 class Animal: def eat(self): print("吃东西...") def drink(self): print("喝水...") def run(self): print("跑步...") class Cat: def eat(self): print("吃东西...") def drink(self): print("喝水...") def run(self): print("跑步...") def miao(self): print("喵喵叫...") class Dog: def eat(self): print("吃东西...") def drink(self): print("喝水...") def run(self): print("跑步...") def wang(self): print("汪汪叫...")
从类图就能看到,使用继承就变得简单多了
# 使用继承 class Animal: def eat(self): print("吃东西...") def drink(self): print("喝水...") def run(self): print("跑步...") class Cat(Animal): def miao(self): print("喵喵叫...") class Dog(Animal): def wang(self): print("汪汪叫...")
子类拥有父类以及父类的父类,以及所有父类的父类的父类...中封装的所有属性、方法
class Animal: def eat(self): print("吃东西...") def drink(self): print("喝水...") def run(self): print("跑步...") class Cat(Animal): def miao(self): print("喵喵叫...") class Dog(Animal): def wang(self): print("汪汪叫...") class Chai(Dog): def shake(self): print("小柴柴摇尾巴...") chai = Chai() # 调用 父类的父类 的方法 chai.eat() # 调用 父类 的方法 chai.wang() # 调用 自己独有 的方法 chai.shake() # 输出结果 吃东西... 汪汪叫... 小柴柴摇尾巴...
抽象即抽取类似或者说比较像的部分
class Animal: def __init__(self, name, age, sex): self.__name = name self.__age = age self.__sex = sex # 提取的公共方法 def eat(self): print(f"{self.__name} 正在吃饭....") @property def name(self): return self.__name class Person(Animal): def walk(self): print(f"{self.name} 两条腿正在走路") class Pig(Animal): def kill(self): print(f"{self.name} 猪正在去屠宰场ing...") class Dog(Animal): def wang(self): print(f"{self.name} 汪汪叫ing...") person = Person("小菠萝", 25, "Male") pig = Pig("麦兜", 4, "公") dog = Dog("柴犬", 3, "母") # 调用父类的公共方法 person.eat() pig.eat() dog.eat() # 调用子类独有的方法 person.walk() pig.kill() dog.wang() # 输出结果 小菠萝 正在吃饭.... 麦兜 正在吃饭.... 柴犬 正在吃饭.... 小菠萝 两条腿正在走路 麦兜 猪正在去屠宰场ing... 柴犬 汪汪叫ing...