python基础 day24 面向对象-继承1

# 继承 --- 解决代码的重复

class A:
    pass
class B(A):
    pass
B继承A,A是父类,B是子类
A是父类 基类 超类
B是子类 派生类
子类可以使用父类中的 方法、静态变量

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

class A:
    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(A):
    def eat(self):
        print('hahah')
        A.eat(self)
    def climb_tree(self):
        print(f'{self.name} is climb tree')

class Dog(A):
    def home(self):
        print(f'{self.name} is keeping home')

tom = Cat('tom')
print(tom.name)
tom.eat()
# 子类中独有的属性
class A:
    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(A):
    def __init__(self, name, color):
        A.__init__(self, name)  # 调用父类的初始化,去完成一些通用属性的初始化值
        self.color = color  # 派生属性
    def climb_tree(self):
        print(f'{self.name} is climb tree')

tom = Cat('tom','blue')
print(tom.color)
print(tom.name)
# 多继承
# 一些语言不支持多继承:java
# 一个类有多个父类,在调用父类方法的时候,按照继承顺序,先继承的就先寻找
class A:
    def func(self): print('in A')
class B:
    def func(self): print('in B')
class C(A, B):
    pass
class D(B,A):
    pass

C().func()  # in A
D().func()  # in B
posted @ 2020-05-13 21:38  Jason857  阅读(113)  评论(0编辑  收藏  举报