美文网首页
【第21天】python全栈从入门到放弃

【第21天】python全栈从入门到放弃

作者: 36140820cbfd | 来源:发表于2019-08-16 18:17 被阅读0次

1 为什么要有继承?

代码块
优化代码,节省代码量
提高代码的复用性.

提高代码的维护性.

让类与类之间发生关系.

2 子类中即实现父类的方法,又实现自己的方法

代码块
super().父类方法名(参数(不需要传self))

父类名.父类方法名(参数,需要传self)

3 新式类和经典类

新式类:继承object类的类都叫新式类. python3x中所有的类默认都继承object,python3x中全部都是新式类.

深度优先和广度优先只能针对继承2个类的情况

广度优先

经典类:不继承object类就是经典类. Python2x 默认是经典类,也可以不默认让其继承object变成新式类.

深度优先

深度优先,广度优先: 只能是继承两个类的情况.

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

继承,多态,封装

5 练习题

a,定义一个父类Animal,在构造方法中封装三个属性,姓名,性别,年龄,再给其添加一个eat的方法,方法中显示%s正在吃饭(%s是哪个对象调用此方法,显示哪个对象名字)。
b,定义两个子类Person,Dog,全部继承这个父类Animal.
c,Person类中,有构造方法,封装一个皮肤的属性,有eat方法,方法中显示人类正在吃饭。
d,Dog类中,有构造方法,封装一个毛色的属性,有eat方法,方法中显示狗狗正在吃饭。

代码块
class Animal:
    def __init__(self, name, gender, age):
        self.name = name
        self.gender = gender
        self.age = age

    def eat(self):
        print('%s正在吃饭' % self.name)


class Person(Animal):
    def __init__(self, name, gender, age, skin):
        super().__init__(name, gender, age)
        self.skin = skin

    def eat(self):
        print('人类正在吃饭')


class Dog(Animal):
    def __init__(self, name, gender, age, color):
        super().__init__(name, gender, age)
        self.color = color

    def eat(self):
        super().eat()
        print('狗狗正在吃饭')

# 实例化一个人类的对象,让其封装姓名,性别,年龄,皮肤四个属性。
p1=Person('wangsiyu','male',24,'黄色皮肤')

# 实例化一个狗类的对象,让其封装姓名,性别,年龄,毛色四个属性
d1=Dog('hahapi','boye',8,'blue')

# 实例化一个人类的对象,让其只执行父类的eat方法(可以对人类代码进行修改)
# 把子类方法注释掉即可

# 实例化一个狗类的对象,让其既执行父类的eat方法,又执行子类的eat方法
d1=Dog('hahapi','boye',8,'blue')
d1.eat()
别跑,点个赞再走

相关文章

网友评论

      本文标题:【第21天】python全栈从入门到放弃

      本文链接:https://www.haomeiwen.com/subject/qyiqsctx.html