python继承

python super()

放肆的年华 提交于 2019-12-21 14:12:51
python super() 转自:http://www.cnblogs.com/lovemo1314/archive/2011/05/03/2035005.html 一、问题的发现与提出   在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(self): print "enter A" print "leave A" class B(A): def __init__(self): print "enter B" A.__init__(self) print "leave B" >>> b = B() enter B enter A leave A leave B 即,使用非绑定的类方法(用类名来引用的方法),并在参数列表中,引入待绑定的对象(self),从而达到调用父类的目的。   这样做的缺点是,当一个子类的父类发生变化时(如类B的父类由A变为C时),必须遍历整个类定义,把所有的通过非绑定的方法的类名全部替换过来,例如代码段2, 代码段2: class B(C): # A --> C def __init__(self): print "enter B" C.__init__(self) # A --> C print "leave B"   如果代码简单

python面向对象相关

℡╲_俬逩灬. 提交于 2019-12-21 08:50:26
面向对象 class的定义 ''' 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 方法:类中定义的函数。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 局部变量:定义在方法中的变量,只作用于当前实例的类。 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。 实例化:创建一个类的实例,类的具体对象。 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。 ''' # 定义 class ClassName : < statement - 1 > . . . < statement - N >

python基础实验:模拟音频播放器

∥☆過路亽.° 提交于 2019-12-21 08:33:11
假设用程序播放音频。一个播放器对象(mediaplayerobject)创建AudioFile 对象,执行 play 方法。play()方法负责解码音频文件,并播放,其行为可简单 描述为audio-file.play()。但解码音频文件,需要根据不同的文件使用不同的 算法,wav,mp3,wma,ogg,显然不能用同一种算法解码。如果,要为每种文件定 义一个play()方法,那得定义很多少个方法?!而且,随着技术发展,出现新的 音频文件格式怎么办,定义多少个方法够用呢?使用继承和多态可以简化设计。 思路是这样的,每种格式用 AudioFile 的一个子类表示,如 WavFile、MP3File 等。每个子类都有自己的play()方法,但该方法根据不同子类实现不同的解码算 法和播放功能。而播放器对象永远不必知道 AudioFile 指的是哪个子类,播放器 只需调用play()方法,让对象的多态机制处理具体的解码播放即可。 本练习涵盖继承、覆盖、多态技术 # polymorphism exercise class AudioFile: def __init__(self, filename): if not filename.endswith(filename[-3:]): raise Exception("Invalid file format") self.filename =

C++使用ffpython嵌入和扩展python

纵然是瞬间 提交于 2019-12-21 06:25:04
摘要: 在服务器编程中,经常会用到python脚本技术。Python是最流行的脚本之一,并且python拥有定义良好的C API接口,同时又有丰富的文档,与C++结合非常的适合。通常情况下使用C++封装机制,而用python脚本实现策略或者是控制。使用python和C++结合的技术拥有如下优势: l 主体系统使用C++实现,保持系统的高效。 l 控制部分使用python,增加开发效率,python的内存垃圾回收,丰富的类库都使C++开发者获益匪浅。 l Python脚本可以运行期重载,可以实现控制部分不停机热更新。 C++与python的编程范式有很大不同,当使用python C API调用python时,python中的一些特有机制会给C++开发者带来很多困惑。常常使用python C API时需要注意如下几点: l Python 使用引用计数管理内存,调用python C API时对于返回值返回的是借用的引用还是新的引用,需要根据文档仔细确认。否则轻则出现内存泄露,重则程序崩溃。 l Python中的数据结构与C++的有很大不同。Python常用的有tuple,list,dict。而c++常用的事vector,list,map,并且c++是强类型的。当c++与python进行交互时,C++层希望操作python数据结构就像操作c++ STL一样方便,而在python脚本层

Python 29 Restful规范

…衆ロ難τιáo~ 提交于 2019-12-21 02:16:10
预备知识: -- 遵循rest风格实现的前后端交互都叫RESTful架构 -- URI:统一资源标识符,相当于身份证号 -- URL:统一资源定位符,相当于姓名 RESTful规范: 一、核心思想 1、面向资源编程,url中尽量用名词而不是动词 2、根据HTTP请求方式的不同对资源进行不同操作。 二、在url中体现的规范 1、体现版本 2、体现是否是API 3、有过滤条件 4、尽量用https 三、在返回值中的规范 1、携带状态码 2、返回值:get返回查看的所有或单条数据;post返回新增的这条数据;put / patch 返回更新的这条数据;delete 返回值空 3、携带错误信息 4、携带超链接 RestFramework 使用: 1、pip install djangorestframework 2、在settings的app中注册rest_framework 一、序列化 from SerDemo import models from SerDemo.serializers import BookSerializer from rest_framework.response import Response from rest_framework.views import APIView # Create your views here. class BookView

Vu Python - 备考宝典

二次信任 提交于 2019-12-21 01:59:56
此篇博客注重概念的总结,以及它们的英文表述。 来吧,对着PPT抠定义,走起! Topic 2 – Operators and Variables 1.What is an expression? An expression is made of operands (values) and operators. 表达式由操作数(值)和运算符组成。 2.Order of Precedence(优先级) 3.What is a variable? A variable is a memory location in computer memory. It has a type and a name. This memory location can store different values of the same type.(变量是计算机内存中的一个内存位置。它有一个类型和一个名称。此内存位置可以存储同一类型的不同值。) 习题讲解: Variables例题精讲 Selection and Repetition Structures 好像没啥概念,刷下例题吧。 Selection and Repetition Structures例题精讲 Strings and Text files 别急,概念集中在class类那个章节里。先看看例题吧。 Strings and Text

Python进阶之:type VS isinstance

☆樱花仙子☆ 提交于 2019-12-21 00:07:28
# 函数isinstance()用来判断一个实例是否是指定类型的实例 # 返回 True False # isinstance 考虑了继承关系 # type VS isinstance # type 返回指定实例的类型 # isinstance 返回指定实例是否是指定类的实例的布尔值 来源: CSDN 作者: dianxiaoer 链接: https://blog.csdn.net/qq_32430761/article/details/103628202

python基础----多态与多态性、super函数用法、继承原理

夙愿已清 提交于 2019-12-20 10:14:09
一、多态与多态性 ㈠多态: 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 1. 序列类型有多种形态:字符串,列表,元组。 2. 动物有多种形态:人,狗,猪 1 import abc 2 class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 3 @abc.abstractmethod 4 def talk(self): 5 pass 6 7 class People(Animal): #动物的形态之一:人 8 def talk(self): 9 print('say hello') 10 11 class Dog(Animal): #动物的形态之二:狗 12 def talk(self): 13 print('say wangwang') 14 15 class Pig(Animal): #动物的形态之三:猪 16 def talk(self): 17 print('say aoao') 3. 文件有多种形态:文件文件,可执行文件 1 import abc 2 class File(metaclass=abc.ABCMeta): #同一类事物:文件 3 @abc.abstractmethod 4 def click(self): 5 pass 6 7 class Text(File): #文件的形态之一

python 面向对象

喜你入骨 提交于 2019-12-20 08:50:55
面向过程 和 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤 优点:极大降低写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。 缺点是:一套代码解决一个问题,牵一发而动全身。 应用:一旦完成基本很少改变的场景,Linux內核,git等。 面向对象的程序设计的核心是对象(上帝式思维)。 优点:对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。 缺点:可控性差,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。 应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等。 类和对象 python中一切皆为对象,类型的本质就是类。 >>> dict #类型dict就是类dict <class 'dict'> >>> d={name:'eva'} #实例化 >>> d.pop('name') #向d发一条消息,执行d的方法pop 'eva' 在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是‘类’,对象是则是这一类事物中具体的一个。 def functionName(args): '函数文档字符串' 函数体 ''' class 类名: '类的文档字符串' 类体 ''' #我们创建一个类 class Data:

面向对象之继承与派生

强颜欢笑 提交于 2019-12-20 08:20:06
阅读目录 一 初识继承 二 继承与抽象(先抽象再继承) 三 继承与重用性 四 派生 五 组合与重用性 六 接口与归一化设计 七 抽象类 八 继承实现的原理(可恶的菱形问题) 九 子类中调用父类的方法 一 初识继承 什么是继承 继承指的是类与类之间的关系,是一种什么是什么的关系,功能之一就是用来解决代码重用问题(比如练习7中Garen与Riven类有很多冗余的代码) 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类 pass 查看继承 >>> SubClass1.__bases__ #__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类 (<class '__main__.ParentClass1'>,) >>> SubClass2.