博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 面向对象(三)
阅读量:4488 次
发布时间:2019-06-08

本文共 2304 字,大约阅读时间需要 7 分钟。

 

 

 

 

 

继承的实现原理

Python支持多继承

多继承的时候  属性查找的顺序

 

研究经典类和新式类在属性查找的不同

 

主要是形成菱形关系才有深度跟广度

 

 

 

 

 

 

 

广度优先

 

 

 

 

 

 

Python的继承原理  Python3的内置方法进行顺序查找

c3线性算法   F.mro()

 

 

子类重用父类的方式

super()专门引用父类的一些属性  是一个特殊的对象   参照mro列表

 

从当前类的父类往后找

依赖于继承   按照mro列表去找

 示例

1 """ 2 Description: 3 Author:Nod 4 Date:18-05-06 5 Record: 6 #---------------------------------v1-----------------------------------# 7 """ 8  9 """10 11 super()专门引用父类的一些属性  是一个特殊的对象   参照mro列表12 13 从当前类的父类往后找14 依赖于继承15 16 17 18 """19 20 class OldboyPeople:21     def __init__(self,name,age,sex):22         self.Name=name23         self.Age=age24         self.Sex=sex25 26     def tell_info(self):27         print('info is %s-%s-%s'%(self.Name,self.Age,self.Sex))28 29 30 class Student(OldboyPeople):31     def __init__(self,name,age,sex,course):32         # OldboyPeople.__init__(self,name,age,sex)33         super().__init__(name,age,sex)34         self.Course=course35 36     def tell_info(self):37         print(' student info')38         #OldboyPeople.tell_info(self)39         super().tell_info()40 41 stu1=Student('nod','25','F','Linux')42 stu1.tell_info()
View Code

 

 

 

 

super方法的补充

super   先找自己类  再去foo  再去 bar

 

super从当前类为起始   再找到当前类的下一类   完全参照

mro列表

 

严格按照mro列表

 

 

1 """ 2 Description:super总结 3 Author:Nod 4 Date:18-05-05 5 Record: 6 #---------------------------------v1-----------------------------------# 7 """ 8  9 10 class Foo:11     def f2(self):12         print('foo.f2')13 14     def f1(self):15         print('Foo f1')16         super().f2()  # super的查找会按照mro列表查找  直接找到当前类的下一个;完全参照mro列表17 18 19 class Bar:20     def f2(self):21         print('Bar f2')22 23 24 class Sub(Foo, Bar):25     pass26 27 28 s = Sub()29 # print(Sub.mro())30 # #[
,
,
,
]31 s.f1()
View Code

 

 

 

Python 的多态与多态性

 

 

Python不限制输入,建议人们约定俗称的去遵守

记住那个谚语,只要长得像鸭子就是鸭子而不管它到底是不是鸭子;如果

一定去甄别什么是什么   什么是鸭子的话   那就是继承的关系  继承在一定程度上影响了代码的低耦合

造成了高耦合;

因为一旦修改了父类,可能会对子类有一定的影响

示例代码

1 class Disk: 2     def wirte(self): 3         print('write to disk') 4     def read(self): 5         print('read from disk') 6          7          8 class Process: 9     def write(self):10         print('write to process')11         12     def read(self):13         print(' read from process')
View Code

 

 

 Python这么语言不会真正的限制你 虽然在有的地方会限制,但是不会真正的限制

 

转载于:https://www.cnblogs.com/nodchen/p/8999819.html

你可能感兴趣的文章
推荐15款好用的JS开发工具
查看>>
ios开发之数据的持久化存储机制
查看>>
mongodb基本操作
查看>>
poj 3264
查看>>
图标跟着摄像机(Camera)orthographicSize的值改变大小
查看>>
LeetCode 386——字典序排数
查看>>
Learn day1 变量/数据类型
查看>>
go安装和开发工具安装
查看>>
【Scala】Scala技术栈
查看>>
PAT-A1033 or codeup 2031 To Fill or Not to Fill (贪心)题解
查看>>
实体字符转换,同样变量密码加盐MD5后生成的加密字符串不同解决办法 (原)
查看>>
《Windows核心编程》第十一章——线程池
查看>>
内存优化
查看>>
数据结构:单链表
查看>>
Go socket
查看>>
无法连接asp.net development server
查看>>
BETTER SUPPORT FOR FUNCTIONAL PROGRAMMING IN ANGULAR 2
查看>>
微信小程序tab栏切换
查看>>
windows pm2 开机启动
查看>>
Flask - 特殊装饰器 和 Flask工作结构模式(FBV, CBV)
查看>>