Python 面向对象(三)
继承的实现原理
Python支持多继承
多继承的时候 属性查找的顺序
研究经典类和新式类在属性查找的不同
主要是形成菱形关系才有深度跟广度

广度优先

Python的继承原理 Python3的内置方法进行顺序查找
c3线性算法 F.mro()
子类重用父类的方式
super()专门引用父类的一些属性 是一个特殊的对象 参照mro列表
从当前类的父类往后找
依赖于继承 按照mro列表去找
示例
"""
Description:
Author:Nod
Date:18-05-06
Record:
#---------------------------------v1-----------------------------------#
""" """ super()专门引用父类的一些属性 是一个特殊的对象 参照mro列表 从当前类的父类往后找
依赖于继承 """ class OldboyPeople:
def __init__(self,name,age,sex):
self.Name=name
self.Age=age
self.Sex=sex def tell_info(self):
print('info is %s-%s-%s'%(self.Name,self.Age,self.Sex)) class Student(OldboyPeople):
def __init__(self,name,age,sex,course):
# OldboyPeople.__init__(self,name,age,sex)
super().__init__(name,age,sex)
self.Course=course def tell_info(self):
print(' student info')
#OldboyPeople.tell_info(self)
super().tell_info() stu1=Student('nod','','F','Linux')
stu1.tell_info()
super方法的补充
super 先找自己类 再去foo 再去 bar
super从当前类为起始 再找到当前类的下一类 完全参照
mro列表
严格按照mro列表
"""
Description:super总结
Author:Nod
Date:18-05-05
Record:
#---------------------------------v1-----------------------------------#
""" class Foo:
def f2(self):
print('foo.f2') def f1(self):
print('Foo f1')
super().f2() # super的查找会按照mro列表查找 直接找到当前类的下一个;完全参照mro列表 class Bar:
def f2(self):
print('Bar f2') class Sub(Foo, Bar):
pass s = Sub()
# print(Sub.mro())
# #[<class '__main__.Sub'>, <class '__main__.Foo'>, <class '__main__.Bar'>, <class 'object'>]
s.f1()
Python 的多态与多态性

Python不限制输入,建议人们约定俗称的去遵守
记住那个谚语,只要长得像鸭子就是鸭子而不管它到底是不是鸭子;如果
一定去甄别什么是什么 什么是鸭子的话 那就是继承的关系 继承在一定程度上影响了代码的低耦合
造成了高耦合;
因为一旦修改了父类,可能会对子类有一定的影响
示例代码
class Disk:
def wirte(self):
print('write to disk')
def read(self):
print('read from disk') class Process:
def write(self):
print('write to process') def read(self):
print(' read from process')
Python这么语言不会真正的限制你 虽然在有的地方会限制,但是不会真正的限制
Python 面向对象(三)的更多相关文章
- Python面向对象三要素-继承(Inheritance)
Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...
- Python面向对象三要素-封装(Encapsulation)
Python面向对象三要素-封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装概述 将数据和操作组织到类中,即属性和方法 将数据隐藏起来,给 ...
- Python面向对象(三)
一.绑定方法与非绑定方法 一.绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数传入 1.绑定给对象的方法:类中定义的函数默认就是绑定给对象的 2.绑定给类的方法:为类中定义的函数加上 ...
- Python面向对象三要素-多态
Python面向对象3要素-多态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 OCP原则:多用“继承”,少修改. 继承的用途:在子类上实现对基类的增强,实现多态. ...
- Python 面向对象三(转载)
来源:Mr.Seven www.cnblogs.com/wupeiqi/p/4766801.html 四.类的特殊成员 上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段.方法和属性三 ...
- python 面向对象三 访问权限 下划线 双下划线
一.双下划线 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问. ...
- python 面向对象(三)类与类之间的关系 初始化方法一些类
###################总结################# 面试的时候 让写python一些特殊方法 __init__ 创建对象的时候初始化 __new__对象实例化调用第一个方法 ...
- python 面向对象(三)--继承和多态
在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Supe ...
- Python 面向对象(三) 魔术方法
__getitem__ 在对实例或对象使用索引访问时调用,self[key]__dir__ 收集当前模块的信息,包括继承自其它基类(包括object类)的属性和方法 __new 定义如何创建实例__i ...
- python面向对象<三>
类属性.实例属性: class Tool(object): #属性(类属性)类对象(Tool) num = 0 #方法 def __init__(self,new_name): self.name = ...
随机推荐
- python中的进程池和线程池
Python标准模块-concurrent.futures #1 介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ...
- pandas中的空值处理
1.空值 1.1 有两种丢失数据: None: Python自带的数据类型 不能参与到任何计算中 np.nan: float类型 能参与计算,但结果总是nan # None+2 # 报错 # np.n ...
- linux安装elasticsearch-head和elasticsearch-analysis-ik及遇到的各种问题
1.获取elasticsearch-head http://mobz.github.io/elasticsearch-head/ 下载并解压 wget https://github.com/mobz/ ...
- SQL DELETE 语句详解
SQL DELETE 语句详解 DELETE 语句 DELETE 语句用于删除表中的行. 语法 DELETE FROM 表名称 WHERE 列名称 = 值 Person: LastName Fir ...
- C语言的通用指针类型(void *)
reference: https://blog.csdn.net/cumirror/article/details/4631701 https://blog.csdn.net/Lee_Shuai/ar ...
- JavaScript入门经典(第四版)读书笔记
第一部分 Web脚本编写与JavaScript语言的概念 1.document.lastModified() -> 返回文档修改日期 2.<head>标签中的<sc ...
- 5.使用std的迭代器访问并修改图像
void Test_ColorReduceByIterator() { Mat g_srcImage=imread("D:\\OpenCV Projects\\OpenCV_Test_Ima ...
- springcloud Zuul学习笔记
SpringCloud Zull是一个基于NetflixZuul实现的API网关组件,它实现了请求路由,负载均衡,校验过滤等功能;本文主要记录springcloud zuul的入门级demo开发过程; ...
- 一分钟学会ConstraintLayout(转载)
原文地址:https://www.v2ex.com/t/287863 最近更新了Android Studio,突然发现xml中的布局已经变成了ConstraintLayout,于是搜了一篇文章看一下 ...
- laravel 解决session保存不了,取不出的问题
555 上传服务器的时候 storage下的framework 没有上传啊