继承的实现原理

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 面向对象(三)的更多相关文章

  1. Python面向对象三要素-继承(Inheritance)

    Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...

  2. Python面向对象三要素-封装(Encapsulation)

    Python面向对象三要素-封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装概述 将数据和操作组织到类中,即属性和方法 将数据隐藏起来,给 ...

  3. Python面向对象(三)

    一.绑定方法与非绑定方法 一.绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数传入 1.绑定给对象的方法:类中定义的函数默认就是绑定给对象的 2.绑定给类的方法:为类中定义的函数加上 ...

  4. Python面向对象三要素-多态

    Python面向对象3要素-多态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.多态概述 OCP原则:多用“继承”,少修改. 继承的用途:在子类上实现对基类的增强,实现多态. ...

  5. Python 面向对象三(转载)

    来源:Mr.Seven www.cnblogs.com/wupeiqi/p/4766801.html 四.类的特殊成员 上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段.方法和属性三 ...

  6. python 面向对象三 访问权限 下划线 双下划线

    一.双下划线 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问. ...

  7. python 面向对象(三)类与类之间的关系 初始化方法一些类

    ###################总结################# 面试的时候 让写python一些特殊方法 __init__ 创建对象的时候初始化 __new__对象实例化调用第一个方法 ...

  8. python 面向对象(三)--继承和多态

    在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Supe ...

  9. Python 面向对象(三) 魔术方法

    __getitem__ 在对实例或对象使用索引访问时调用,self[key]__dir__ 收集当前模块的信息,包括继承自其它基类(包括object类)的属性和方法 __new 定义如何创建实例__i ...

  10. python面向对象<三>

    类属性.实例属性: class Tool(object): #属性(类属性)类对象(Tool) num = 0 #方法 def __init__(self,new_name): self.name = ...

随机推荐

  1. Nginx的使用(二)Nginx配置wordpress

    安装php:https://windows.php.net/download/,php默认启动命令:php-cgi.exe -b 127.0.0.1:9000 安装wordpress:https:// ...

  2. Win10系列:C#应用控件基础20

    SemanticZoom控件 SemanticZoom控件由相互关联的缩小视图和放大视图所组成,缩小视图用来显示内容的索引,放大视图可以用来显示内容的详细信息,用户可以根据阅读需要在两种视图之间自由切 ...

  3. Win10系列:C#应用控件基础16

    ToolTip控件 ToolTip控件常作为一些控件的子元素,当鼠标移动到指定控件上时在界面上弹出一个信息提示框.例如,为了节省窗体上的空间或增加美观性,仅在按钮上显示一个指示性图案,当鼠标移动到按钮 ...

  4. Android7.0手机程序保活(附源码下载)

    项目地址,求starhttps://github.com/979451341/AppAlive 本人在学习音视频时无意发现的黑科技,发现在使用AudioTrack播放音乐时,使用手机的一键清理发现程序 ...

  5. python基础11_函数作用域_global_递归

    看到了一个16进制转换的小知识点,就验证了一下运行结果. #!/usr/bin/env python # coding:utf-8 # 看到了16进制转换的问题.顺便验证一下. a = 255 b = ...

  6. MFC VC++ 根据文件名获取程序的Pid

    环境:PC Win7 VS VC++ .MFC 使用,输入文件名即可获取程序的pid,进而可以对程序进行操作,比如关闭Porcess等. 头文件: #include <TlHelp32.h> ...

  7. 8--Python入门--函数

    函数基本框架如下([]中的内容表示是或选的,可以不写):def 函数名(参数): ['''函数说明文档'''] 函数主体 [return 返回对象] 函数小例子 #我们先定义一个函数 def find ...

  8. 小程序仿QQ侧滑例子

    缩放:wxml <!--page/one/index.wxml--> <view class="page"> <view class="pa ...

  9. 获取真实ip三个方法

    方法一: /** * 获取客户端IP地址 * * @return string */function get_client_ip(){ if (getenv("HTTP_CLIENT_IP& ...

  10. Jacobi-Anger expansion

    [转载请注明出处]http://www.cnblogs.com/mashiqi 2017/06/16 适合于自己的关于Jacobi-Anger expansion的推导方法,这里记下来,方便以后查阅. ...