python继承

TypeError: Cannot create a consistent method resolution order (MRO) for bases WampTest, MusicTest

假装没事ソ 提交于 2019-12-26 15:13:33
报错位置 MusicTest类继承VoiceTest类 VoiceTest继承WampTest 报错:TypeError: Cannot create a consistent method resolution order (MRO) for bases WampTest, MusicTest 在网上搜了一下,了解到python当中 新式类多重继承原则:广度优先,从左到右 当需要在继承链中寻找某个属性时,Python会在 MRO 列表中从左到右开始查找各个基类,直到找到第一个匹配这个属性的类为止。 子类BTSwitchTVTest在继承WampTest和MusicTest时,从左到右去继承父类,而导致继承WampTest时继承混乱,无法唯一确认类之间得关系 来源: CSDN 作者: cai521mengyuan 链接: https://blog.csdn.net/cai521mengyuan/article/details/103712045

python 装饰器

五迷三道 提交于 2019-12-26 15:11:33
原文: http://docs.pythontab.com/interpy/decorators/your_first_decorator/ 你的第一个装饰器: 在上一个例子里,其实我们已经创建了一个装饰器!现在我们修改下上一个装饰器,并编写一个稍微更有用点的程序: 1 def a_new_decorator(a_func): 2 3 def wrapTheFunction(): 4 print("I am doing some boring work before executing a_func()") 5 6 a_func() 7 8 print("I am doing some boring work after executing a_func()") 9 10 return wrapTheFunction 11 12 def a_function_requiring_decoration(): 13 print("I am the function which needs some decoration to remove my foul smell") 14 15 a_function_requiring_decoration() 16 #outputs: "I am the function which needs some decoration to remove

python基础知识学习第八天

白昼怎懂夜的黑 提交于 2019-12-26 04:19:51
面向对象编程OOP 面向对象 对象的概念是面向对象技术的核心。在现实世界里,我们面对的所有事物都是对象,如计算机、电视机、自行车等。在面向对象的程序设计中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。 面向对象的三个主要特性: 对象的行为:可以对对象施加哪些操作;如电视机的开、关、转换频道等。 对象的状态:当施加那些方法时,对象如何响应;如电视机的外形、尺寸、颜色等; 对象的标识:如何区分具有相同行为与状态的不同对象。 基本概念: 对象,所谓数据封装就是将一组数据与这组数据有关操作组装在一起,形成一个实体,这个实体就是对象。 类(Class)具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。 成员:对象的状态和行为。 属性:对象的状态,一个对象用数据值来描述它的状态。 方法:对象的行为,用于改变对象的状态,对象及其操作就是对象的行为 成员 属性 方法 常量 魔术方法 构造 析构 __clone __toString __call 继承: 一个对象拥有或者使用另一个对象的成员信息,称之为这个对象继承自另一个对象。 Php中,通过在类上,使用特殊的操作达到目的。 通过在定义类时,利用 extends 来指明当前类对象继承那个类的对象! 重写override 集成时,如果发生成员冲突,php的处理方式,为重写。就是子类同名成员会覆盖父类同名成员

python继承

核能气质少年 提交于 2019-12-26 01:20:58
继承介绍: 继承就是让类和类之间产生父子关系,子类可以拥有父类的静态属性和方法。 python中的继承分为 单继承 和 多继承 python的单继承: 先定义一个人的类;自我介绍,姓名,年龄,体重 class Person : # 定义基本属性 name = '' age = 0 # 定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 # 构造方法 def __init__ ( self , name , age , weight ) : self . name = name self . age = age self . weight = weight def msg ( self ) : return '{}说:我{}岁' . format ( self . name , self . age ) # 继承 class LiMing ( Person ) : gerden = '' def __init__ ( self , name , age , gerden , weight ) : #调用父类的构造函数 Person . __init__ ( self , name , age , weight ) self . gerden = gerden # 重写父类msg方法 def msg ( self ) : return '{}说:我{}岁,性别{}

Python类的内置方法

帅比萌擦擦* 提交于 2019-12-25 16:00:51
目录 1、new、init 2、str、repr 3、call 4、del 5、iter、next 6、getitem、setitem、delitem 7、getattr、setattr、delattr 8、getatrribute 9、enter、exit 10、get、set、delete、描述符(研究中,待补充) **(为了方便和美观,省略了各内置方法前后的__双下划线)** 1、new、init __new__ 方法是真正的类构造方法,用于产生实例化对象(空属性)。重写 __new__ 方法可以控制对象的产生过程。 __init__ 方法是初始化方法,负责对实例化对象进行属性值初始化,此方法必须返回None, __new__ 方法必须返回一个对象。重写 __init__ 方法可以控制对象的初始化过程。 # 使用new来处理单例模式 class Student: __instance = None def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = object.__new__(cls) return cls.__instance def sleep(self): print('sleeping...') stu1 = Student() stu2 = Student()

Python学习笔记一:十分钟入门

五迷三道 提交于 2019-12-25 14:18:44
【转】为什么要自己敲呢?--学习的过程。 发展历史 简介: Python是一种动态解释型的编程语言。Python可以再Windows,UNIX,MAC等多种ca 特点: 1. python使用C语言开发,但是python不再有C语言中的指针等复杂的数据类型。 2. python具有很强的面向对象特性,而且简化了面向对象的实现。它消除了包含类型、抽象类、接口等面向对象的元素。 3.python代码块使用空格或制表符缩进的方式分隔代码。 4. python仅有31个保留字,而且没有分号、begin、end等标记 5. python是强类型语言,变量创建后会对应一种数据类型,出现在同一表达式中的不同类型的变量需要做类型转换。 搭建开发环境: 1. 可以到 www.python.org 下载安装包,然后通过configure、make、make install进行安装 2. 也可以到www.activestate.com去下载ActivePython组件包。(ActivePython是对Python核心和常用模块的二进制包装,它是ActiveState公司发布的Python开发环境。ActivePython使得Python的安装更加容易,并且可以应用在各种操作系统上。ActivePython包含了一些常用的Python扩展,以及Windows环境的编程接口)。对ActivePython来说

Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系)

帅比萌擦擦* 提交于 2019-12-24 20:22:20
在面向对象的中,类与类之间存在三种关系:依赖关系、组合关系、继承关系。 1、依赖关系:将一个类的类名或对象当做参数传递给另一个函数被使用的关系就是依赖关系 class People: def __init__(self,name): self.name = name def open(self,bx): bx.open_door(self) def close(self,bx): bx.close_door(self) class Refrigerator: def __init__(self,name): self.name = name def open_door(self,p): print(f"{p.name} 打开冰箱") def close_door(self,p): print(f"{p.name} 关闭冰箱") r = People("大魔") # People类实例化一个对象r aux = Refrigerator("奥克斯") # Refrigerator类实例化一个对象aux r.open(aux) # 将aux对象当做参数传递给r对象的open方法使用 r.close(aux) # 将aux对象当做参数传递给r对象的close方法使用 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能

深度解析并实现python中的super(转载,好文)

本秂侑毒 提交于 2019-12-24 19:10:43
大神半个月的成绩,让我看的叹为观止,建议看原帖地址,会让你对Python的描述符有更强的认识。 原文链接:https://blog.csdn.net/zhangjg_blog/article/details/83033210 深度解析并实现python中的super 概述 super的定义 函数bound和描述器 super的典型用法 super的本质 自定义super python中对super的实现 写在最后 概述 python中的super是一个神奇的存在。本文对python中的super进行深入的讲解,首先说明super的定义,并列举一下super的典型用法,然后会对和super相关的语言特性进行讲解,比如mro(方法解析顺序),descriptor描述器,函数绑定,最后尝试自己动手实现一个super,并简单探索一下python中对super的实现。 super的定义 首先看一下super的定义,当然是help(super)看一下文档介绍: Help on class super in module builtins: class super(object) | super() -> same as super(__class__, <first argument>) | super(type) -> unbound super object | super(type,

Python2.x与3.x版本区别

你说的曾经没有我的故事 提交于 2019-12-24 17:50:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。 为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。 新的Python程式建议使用Python 3.0版本的语法。 除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。 大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。 Python 3.0的变化主要在以下几个方面: print 函数 print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python

python基础(十一)面向对象和类

会有一股神秘感。 提交于 2019-12-24 10:42:18
面向对象 面向对象,简单来说用类对一切对象进行描述的一种编程思维和方法.在这里就不多做介绍(因为我也只是意会到一点点).根据面向对象的概念,我们需要注意的几个概念: 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法. 对象(Object):通过类定义的数据结构实例.对象包括两个数据成员(类变量和实例变量)和方法。 类变量:类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用. 实例变量:定义在方法中的变量,只作用于当前实例. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法:类中定义的函数. 继承:即一个派生类(derived class)继承基类(base class)的字段和方法.也称为父类和子类 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写. 实例化:创建一个类的实例,类到具体对象的过程 属性: 不管是变量或者是方法,都称为属性.变量一般称为静态属性,方法称为动态属性 面向对象的三大特性 1, 封装: 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 2, 继承: 让不同类型的对象获得其它类型对象的属性和方法. 3, 多态: 实现接口重用, 即可以不同类型对象使用相同的方法