Python类和对象二(十一)

构造函数:

重写:

通过类名访问类里面的方法的做法,称为调用未绑定的父类方法,他有时候会产生钻石继承问题:

发现A重复初始化了两次,类c同事继承类B1和B2,类B1和B2又是继承类A的,当c调用类B1和类B2的构造函数的时候,类A会被调用两次

如何解决钻石继承问题呢?通过使用super函数:super能够在函数中搜索指定的方法,并自动绑定好self参数

通过super函数,去查找父类的方法,自动会按照mro的顺序,去搜索父类的相关方法,避免重复调用的问题,mro顺序就是:如果出现同名的属性和方法,py会有一个明确的查找覆盖顺序,这个顺序有一个官方的术语叫做mro

Min-In:后期添加某个功能

多态:

见机行事的行为称为多态:

这几个对象都继承Shape类,他们都重写了构造函数和area方法,这个就是多态的体现

自定义函数是如何实现多态接口的:animal函数具有多态性了,该函数接受不同的对象作为参数,并且不检查类型的情况下执行他的方法

鸭子类型:

相关推荐
寻星探路3 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
ValhallaCoder5 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
猫头虎6 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
八零后琐话7 小时前
干货:程序员必备性能分析工具——Arthas火焰图
开发语言·python
青春不朽5128 小时前
Scrapy框架入门指南
python·scrapy
MZ_ZXD0018 小时前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php
全栈老石9 小时前
Python 异步生存手册:给被 JS async/await 宠坏的全栈工程师
后端·python
梨落秋霜9 小时前
Python入门篇【模块/包】
python
阔皮大师10 小时前
INote轻量文本编辑器
java·javascript·python·c#