Python面向对象详解(4-4)
【摘要】 Python面向对象详解(4-4)
目录
一.继承
- 什么是继承?
- 父(基)类与子(派生)类
- 继承的用法
1.什么是继承?
- 通过继承基类来得到基类的功能
- 所以我们把被继承的类称作父类或基类,继承者被称作子类或派生类
- 代码的重用
2.父类与子类的关系
- 子类拥有父类的所有属性和方法
- 父类不具备子类自有的属性和方法
3.Python中类的继承
- 定义子类时,将父类传入子类的参数括弧内
- 子类的实例化可以调用自己与父类的函数与变量
4.实战
输出结果:
在上面的代码中,我们定义了一个父类
Animal
和两个子类Dog
和Cat
。子类通过class 子类名(父类名):
的方式继承父类的属性和方法。子类可以在继承父类的基础上定义自己的属性和方法。在子类的
__init__
方法中,我们使用super().__init__(参数)
来调用父类的__init__
方法,以便子类可以继承父类的属性。在主程序中,我们分别创建了一个
Dog
对象和一个Cat
对象,并调用了它们的继承自父类的方法,以及子类自己定义的方法。可以看到,子类Dog
和Cat
成功继承了父类Animal
的方法,并且可以使用自己定义的方法。这展示了Python中类继承的基本概念和用法。
二.类的多态
- 什么是类的多态?
- 为什么要使用多态?为什么要去继承父类?
- 多态的用法
1.什么是类的多态?
- 同一个功能的多状态化
2.为什么要使用多态?为什么要去继承父类?
- 答案:为了使用已经写好的类的函数,为了保留子类中某个和父类名称一样的函数功能,这时候,我们就用到了多态,可以帮助我们保留子类中的函数功能
3.多态的用法
- 子类中重写父类的方法
4.实战
输出结果:
三.python中的super函数
- super函数的作用
- super函数的用法
1.super函数的作用
- python子类继承父类的方法而使用的关键字,当
子类继承父类后,就可以通过super函数调用父类中的方法
2.super函数的用法
- python3.0后,super()函数括弧内不用传参数也能执行
- 通过super函数可以让子类完全执行父类相同函数的业务逻辑
3.实战
输出结果:
四.类的多重继承
- 什么是多重继承?
- 多重继承的方法
1.什么是多重继承?
- 可以继承多个基(父)类
2.多重继承的方法
- class Child(Parent1, Parent2, Parent3....):
- 将被继承的类放入子类的参数位中,参数之间用逗号隔开
- 从左到右依次继承
- 如果父类中有相同的函数,在子类中调用此函数则以继承时从左到右的顺序执行,可以调用__mro__函数(method resolution order 方法解析顺序)来查看继承的顺序
- 通过多重继承的方法,可以使用多个父类中的函数。如果继承的多个父类中有相同的函数,最开始继承的这个父类中的函数将会发生作用。
3.实战
输出结果:
五.类中的高级函数
- __str__
- __getattr__
- __setattr__
- __call__
1.__str__函数
- 如果定义了该函数,当print当前实例化对象的时候,会返回该函数的return信息
- 可用于定义当前类的描述信息
- 用法:
- 参数:无
- 返回值:一般用于返回对于该类的描述信息
2.__getattr__函数
- 当调用的属性或者方法不存在时,会返回该方法定义的信息
- 用法:
- 参数:key:调用的任意的不存在的属性名
- 返回值:可以是任意类型也可以不进行返回
3.__setattr__函数
- 拦截当前类中给属性赋值的操作,在Python中,
__setattr__
是一个特殊方法(也称为魔术方法或魔术函数),用于设置属性的值。当你尝试给一个对象的属性赋值时,__setattr__
方法会被自动调用。
- 参数:key:需要修改值属性名;value 当前的参数所需要设置的对应的值
- 返回值:无
4.__call__函数
- 本质上是将一个类变成一个函数
- 用法:
- 参数:可传任意参数
- 返回值:与函数情况相同可有可无
5.实战
输出结果:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)