面向对象---继承

面向对象----继承

继承 -- 需要解决代码的重复

继承语法:

class A:
    pass
class B(A):
    pass

B继承A,A是父类,B是子类
A是父类 基类 超类
B是子类 派生类

字类可以使用父类中的:方法 静态变量

class Animal:
    def __init__(self,name):
        self.name = name
    def eat(self):
        print(f'{self.name} is eating')
    def drink(self):
        print(f'{self.name} is drinking')
    def sleep(self):
        print(f'{self.name} is sleeping')
class Cat(Animal):
    def climd_tree(self):
        print(f'{self.name} is climbing')
class Dog(Animal):
    def house_keep(self):
        print(f'{self.name} is keeping')
小白 = Cat('小白')
小白.eat()
#先开辟空间,空间理由一个类指针指向Cat
#调用init,对象在自己的空间找init没有找到,到Cat类找init也没有找到,找父类Animal中的init
当子类和父类的方法重名的时候,我们只是用子类的方法,而不会去调用父类的方法
class Animal:
    def __init__(self,name):
       self.name = name
    def eat(self):
         print('%s is eating'%self.name)
    def drink(self):
         print('%s is drinking'%self.name)
    def sleep(self):
         print('%s is sleeping'%self.name)
class Cat(Animal):
    def eat(self):
        print(f'{self.name}吃猫粮')
    def climb_tree(Self):
        print(f'{self.name} is climbing')
小白 = Cat('小白')
小白.eat


子类想要调用父类的方法的同时还想执行自己的同名方法
猫和狗在调用eat的时候即调用自己的也调用父类的
在字类的方法中调用父类的方法:父类名.方法(self)
    
class Animal:
    def __init__(self,name,food):
        self.name = name
        self.food = food
        self.blood = 100
        self.waise = 100
    def eat(self):
        print(f'{self.name} is {self.food}')
    def drink(self):
        print(f'{self.name} is drinking')
    def sleep(self):
        print(f'{self.name} is sleeping')
        
class Cat(Animal):
    def Cat(self):
        self.bood += 100
        Animal.eat(self)
    def climb_tree(self):
        print(f'{self.name} is climbing')
        self.drink
class Dog(Animal):
    def eat(self):
        self.waise += 100
        Animal.eat(self)
    def house_keep(self):
        print(f'{self.name} is keeping')
小白 = Cat('小白','猫粮')
小黑 = Dog('小黑','狗粮')
小白.eat()
小黑.eat()

继承语法 class 子类名(父类名):pass
父类和子类方法的选择:
	子类的对象,如果去调用方法,永远优先调用自己的
    如果自己有 用自己的 
    自己没有,用父类的
    自己有 还想用父类的:直接在子类方法中调用父类的方法 父类名.方法名(self)
    
    

单继承

  1. 调子类的:子类自己有的时候
  2. 调父类的:子类自己没有的时候
  3. 调子类和父类,子类父类都有的时候,在子类中调用父类

多继承

  1. 一个类有多个父类,在调用父类方法的时候,按照继承顺序,先继承的先寻找
原文地址:https://www.cnblogs.com/wang-xing-hao/p/11172703.html