继承:Python继承

一、类的继承

class Animal:
    breath = '呼吸'

    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

    def eat(self):
        print(self)
        print('动物都需要进食....')
        
class Person(Animal):  # 括号里面的 父类,基类,超类   括号外面的 子类,派生类.
    pass

class Cat:
    pass

class Dog:
    pass


p1 = Person('alex', 'laddyboy', 1000)
print(p1.breath)
print(p1.__dict__)

二、对象执行先执行本类中的属性或方法,如果没有在父类中查找。

# 多继承:
# 新式类: 遵循广度优先.
# 经典类: 遵循深度优先.
class Animal:

    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

    def eat(self,a1):
        print('%s吃%s' % (self.name,a1))

    def drink(self):
        print('%s喝东西' % (self.name))


class Cat(Animal):

    def miaow(self):
        print('喵喵叫')
    # def eat(self):  # 只执行自己类中的方法
    #     print(666)

c = Cat('', '', 20)
print(c.eat(""))

三、super在子类中执行父类方法

class Person:
    ROLE = 'CHINA'
    print(ROLE)

    def func(self):
        print("123456")

class B(Person):
    def func(self):
        super(B, self).func()
        # Person.func(self)
        print('789')
a = B()
# print(Person.func)
print(a.func())

继承:经典继承、新式继承

class A:
    def func(self):
        print("A")
class B(A):
    def func(self):
        super().func()
        print("B")
class C(A):
    def func(self):
        super().func()
        print("C")
class D(B,C):
    def func(self):
        super().func()
        print("D")
# 遵循mro算法 d
= D() d.func()

1,面向对象的三大特性是什么?

     继承 多态 封装.

2,什么是面向对象的新式类?什么是经典类?

3,面向对象为什么要有继承?继承的好处是什么?
优化代码,节省代码.
提高代码的复用性.
提高代码的维护性.
让类与类之间发生关系.
4,面向对象的广度优先,深度优先分别是什么?

5,面向对象中super的作用。
在子类中调用父类的方法.

二,代码题(通过具体代码完成下列要求):
1,
a,定义一个父类Animal,在构造方法中封装三个属性,姓名,性别,年龄,
再给其添加一个eat的方法,方法中显示%s正在吃饭(%s是哪个对象调用此方法,显示哪个对象名字)。
b,定义两个子类Person,Dog,全部继承这个父类Animal.
c,Person类中,有构造方法,封装一个皮肤的属性,有eat方法,方法中显示人类正在吃饭。
d,Dog类中,有构造方法,封装一个毛色的属性,有eat方法,方法中显示狗狗正在吃饭。
上面这几个类创建完成之后,完成下列要求:
①: 实例化一个人类的对象,让其只封装皮肤属性。
②: 实例化一个人类的对象,让其封装姓名,性别,年龄,皮肤四个属性。
③: 实例化一个狗类的对象,让其只封装毛色属性。
④: 实例化一个狗类的对象,让其封装姓名,性别,年龄,毛色四个属性。
⑤: 实例化一个人类的对象,让其只执行父类的eat方法(可以对人类代码进行修改)。
⑥: 实例化一个狗类的对象,让其既执行父类的eat方法,又执行子类的eat方法。
posted @ 2021-02-22 10:24  跳动0101  阅读(81)  评论(0)    收藏  举报