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 = ...
随机推荐
- 【Java】【9】String Date Calendar之间的转换
前言: 1, Calendar 转化 String 2, Calendar 转化 Date 3,Date 转化 String 4,Date 转化 Calendar 5,String 转化 Calend ...
- .NET:bin 与 obj,Debug 与 Release ,区别与选择
bin 与 obj bin 目录:用来存放编译的结果. ( bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件 ) 编译的结果,有 Debug 和 Release 两个版本 ...
- C++11 boost TR1 TR2曾经参考过的网址整理
boost::bind的用法:http://blog.csdn.net/adcxf/article/details/3970116
- QChart绘制折线区域
效果图: 代码: // 创建折线上点的序列 QLineSeries *splineSeries = new QLineSeries(); //QSplineSeries *splineSeries = ...
- 7——ThinkPhp中的响应和重定向:
public function index3(){ //响应数据: $data=['title'=>"标题部分","content"=>" ...
- hibernate操作mysql插入修改中文出现乱码
第一步:mysql的安装目录下配置文件my.ini里面的所有default-character-set改成default-character-set = utf8: 第二部:建立数据库时候字符集选项选
- 脚本自动部署及监控 web
1.编写脚本自动部署反向代理.web.nfs: I.部署nginx反向代理两个web服务,调度算法使用加权轮询 II.所有web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性: ...
- elastic search 重要的系统配置
文章翻译自 https://www.elastic.co/guide/en/elasticsearch/reference/current/file-descriptors.html 1.文件描述符 ...
- 从零开始学Shell(二)
$1,$2....${10},${11},[root@localhost cee]# cat p.sh #!/bin/bash#file_name:p.shecho $1 $2[root@localh ...
- SEH X86
( windows 提供的异常处理机制实际上只是一个简单的框架,一般情况下开发人员都不会直接用到.我们通常所用的异常处理(比如 C++ 的 throw.try.catch)都是编译器在系统提供的异常处 ...