python继承

python 类学习笔记

血红的双手。 提交于 2020-02-04 13:49:21
Python的类机制使用尽可能少的新语法和语义将类引入语言。Python的类提供了面向对象程序设计语言所有的 标准特性:类继承机制允许有多个基类,一个派生类可以覆盖基类中的任何方法,一个方法可以使用相同的名字调用 基类中的方法。 Table of Contents 1 名字和对象 2 Python的域(scopes)和名称空间(namespaces) 3 初识类 3.1 定义类 3.2 类对象 3.3 实例化对象 3.4 方法对象 4 漫谈 5 派生 6 多重继承 7 私有变量和类局部引用 8 结构体 9 异常(Exceptions)也是类 10 迭代器 11 生成器(Generators) 1 名字和对象 对象有其特性,同一个对象可以有多个名字,这与其它语言中的别名很相似。别名有时候像指针,例如将对象当做 函数参数传递的时候非常高效,因为只传递了指针,这避免了pascal中的两套参数传递机制。 2 Python的域(scopes)和名称空间(namespaces) 在引入类之前,我们讲Python的域规则。类的定义巧妙地运用了名称空间,所以你需要知道域和名称空间如何工作才能理解发生了什么。 首先从定义开始。 名称空间是名字和对象之间的映射。多数名称空间使用Python的字典来实现,但 除非出于性能考虑,我们 通常不关心具体如何实现。名称空间的例子有,内置的名称例如abs()

从C#到Python —— 4 类及面向对象

▼魔方 西西 提交于 2020-02-04 13:18:08
如果你熟悉C#,那么对类(Class)和面向对象(Object Oriented)应该不会陌生。Python与C#一样,能够很好地支持面向对象的编程模式。本章对Python中面向对象编程的基本知识进行介绍,并将其与C#中的对应部分进行比较。 4.1 类的定义与实例化 4.1.1 类的定义 与C#一样,Python使用class关键字定义一个类。一个最简单的类定义语句如下: 1 class A:2 pass 它等价于C#中的 class A{}。当然,以上语句没有任何实际意义,它只是告诉我们什么是定义一个类所必需的,即:class关键字,类名和冒号,pass关键字只用来占位,相当于C#中花括号的作用。 4.1.2 类的实例化 类是定义对象格式的模板,而对象则是类的实例,通过类创建对象的过程称为类的实例化。在C#中,需要使用new关键字实例化一个类,例如 A a = new A(); 在上条语句中,C#完成了两件事情:首先声明一个类型为A的变量a,然后用new运算符创建一个类型为A的对象,并将该对象的引用赋值给变量a。而在Python中没有new关键字,同时它是一种动态语言,不需要事先指定变量的类型,只需要: a = A() 即可创建一个类型为A的对象,看起来好像是将类当作一个函数调用,返回值是新创建的对象。 4.2 类的成员变量 4.2.1 为类添加数据

python子类继承父类的构造函数

假装没事ソ 提交于 2020-02-04 09:05:09
‘’‘子类继承父类’’’ ```python class Frute(object): def __init__(self,name): self.name=name def info(self): print("u'水果的名字是:{0}".format(self.name)) class Apple(Frute): def __init__(self,name,brand,color): Frute.__init__(self,name) self.brand=brand self.color=color def info(self): print("水果是{0},品牌是{1},颜色是{2}".format(self.name,self.brand,self.color)) f1=Apple("苹果","红富士","红色") f1.info() C:\Programs\Python\Python35\python.exe D:/script/myobj.py 水果是苹果,品牌是红富士,颜色是红色 Process finished with exit code 0 ```python ```python ‘’‘子类不继承父类’’’ class Frute(object): def init (self,name): self.name=name def info(self):

Python编程语言简介

南楼画角 提交于 2020-02-03 17:20:21
  Python诞生于20世纪90年代初,由荷兰人吉多·范罗苏姆发明。那么,Python这一门编程语言是如何发明的呢?这之中又有怎么的故事呢?请看下面。   故事发生在1989年的圣诞节上,吉多先生为了打发无聊,于是想要开发一门编程语言作为对ABC语言的继承,那么,为什么要开发ABC语言的继承呢?因为吉多先生认为ABC语言非常优美,而且功能强大。但是ABC语言并没有成功,所以吉多先生下定决心开发一个新的脚本解释程序,用来作为对ABC语言的一种继承。于是,Python编程语言应运而生。Python来自于吉多先生喜爱的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python's Flying Circus)。其中Python是大蟒蛇的意思。   Python 受到了 Modula-3 语言的影响,并结合了 Unix shell 和 C 的习惯。Python 语言遵循 GPL(GNU General Public Licence) 协议。GPL 指的是GNU通用公共许可协议,该协议通过提供给作者软件版权保护和许可证保障作者的权益。Python 发行了两个版本,分别是 Python2 和 Python3 。Python2 在 2000 年 10 月 16 日进行发布。Python3 在2008 年 12 月 3 日发布。两个版本之间不完全兼容。因为 Python2.7 除了支持

Python全栈(四)高级编程技巧之4.元类编程、迭代器和生成器

◇◆丶佛笑我妖孽 提交于 2020-02-03 05:44:37
文章目录 一、__getattr__和__getattribute__魔法函数 二、属性描述符 1.属性描述符分析 2.属性查找顺序 三、自定义元类 1.动态创建类 2.使用type创建类 四、metaclass属性 五、迭代器和生成器 1.迭代器 2.生成器 应用:生成器读取大文件 一、__getattr__和__getattribute__魔法函数 from datetime import date class User : def __init__ ( self , name , birthday ) : self . name = name self . birthday = birthday if __name__ == "__main__" : user = User ( "corley" , date ( year = 2020 , month = 1 , day = 1 ) ) print ( user . name ) 打印 corley 当打印不存在的属性时,会报错: from datetime import date class User : def __init__ ( self , name , birthday ) : self . name = name self . birthday = birthday if __name__ == "__main

python学习日记

淺唱寂寞╮ 提交于 2020-02-03 02:21:22
Python编程:从入门到实践 TypeError:object.__init__()takes no parameters ##2020.02.02 python学习日记## TypeError: object. init () takes no parameters 解决措施: ①检查__init__左右是否为两下划线 ②子类未继承父类,如下 class IceCreamStand ( ) : def __init__ ( self , restaurant_name , cuisine_type ) : super ( ) . __init__ ( restaurant_name , cuisine_type ) self . flavors = 'strawberry' 应更改为 class IceCreamStand ( Restaurant ) : def __init__ ( self , restaurant_name , cuisine_type ) : super ( ) . __init__ ( restaurant_name , cuisine_type ) self . flavors = 'strawberry' 来源: CSDN 作者: qq_41743656 链接: https://blog.csdn.net/qq_41743656/article

Python全栈自动化系列之Python编程基础(类讲解)

穿精又带淫゛_ 提交于 2020-02-01 21:18:35
一、类 类可以用来封装一类事物共同的属性和行为 1)特征:即属性:属性就是定义在类里面的变量   a.类属性:直接定义在类里面的变量(这个类的每个对象都有这个属性,里面的属性值都是一样)     共有属性:在类外面的通过类和对象都可以访问     私有属性:只能在类里面访问,类外面不要去访问         私有属性的定义:             以单下划线开头:例如,_attr = 10(在类外面可以访问,但不要在类外面使用)             以双下划线开头:例如,__attr = 100(在类外面不能直接访问)         拓展:双下划线开头的私有属性,在保存的时候其实对外是换了一个名字(__属性 =====> _类名__属性)   b.对象属性(实例属性):这一类事物都可能会有这个属性,属性值有可能不一样(自己独立的属性)     对象属性的定义:           方式一:通过对象进行赋值:对象.属性=属性值(在类外面)           方式一:通过初始化方法__init__进行定义:self.属性 = 属性值(在类里面的__init__方法中 )                 self:代表的是对象本身,那个对象去调用方法,self代表的就是那个对象 2)__init__方法:可以用来初始化对象属性 3)对象,是通过类创建出来的

python之ORM的应用

我们两清 提交于 2020-02-01 05:16:06
''' ORM 对象关系映射 --->映射到数据表的一条条记录 类名 ---> 表名 对象 ---> 一条记录 对象.属性 ---> 字段 ''' from day38 . mysql_control import MySQL # 1.创建字段的类型 对应数据表中一个个字段的创建规范 class Field : #父类 def __init__ ( self , name , column_type , primary_key , default ) : self . name = name self . column_type = column_type self . primary_key = primary_key self . default = default class StringField ( Field ) : #varchar def __init__ ( self , name , column_type = 'varchar(64)' , primary_key = False , default = None ) : super ( ) . __init__ ( name , column_type , primary_key , default ) #继承父类 class IntegerField ( Field ) : #int def __init_

09-07 元类

爷,独闯天下 提交于 2020-02-01 02:02:24
文章目录 一 元类介绍 二 class关键字创建类的流程分析 四 自定义元类控制类StanfordTeacher的创建 五 自定义元类控制类StanfordTeacher的调用 五 再看属性查找 六 作业 一 元类介绍 什么是元类呢?一切源自于一句话:python中一切皆为对象。让我们先定义一个类,然后逐步分析 class StanfordTeacher ( object ) : school = 'Stanford' def __init__ ( self , name , age ) : self . name = name self . age = age def say ( self ) : print ( '%s says welcome to the Stanford to learn Python' % self . name ) 所有的对象都是实例化或者说调用类而得到的(调用类的过程称为类的实例化),比如对象t1是调用类StanfordTeacher得到的 t1 = StanfordTeacher ( 'lili' , 18 ) print ( type ( t1 ) ) #查看对象t1的类是<class '__main__.StanfordTeacher'> 如果一切皆为对象,那么类StanfordTeacher本质也是一个对象,既然所有的对象都是调用类得到的

Python学习笔记(九)之面向对象编程(下)

僤鯓⒐⒋嵵緔 提交于 2020-01-31 19:32:55
目录 0. 附上Python面向对象学习笔记上的链接: Python学习笔记(八)之面向对象编程(上) 1. 引言 2. 继承和多态 2.1 继承 2.1.1 继承的含义 2.1.2 继承实例 2.2 多态 2.2.1 多态的含义 2.2.2 多态实例 3. 实例属性和类属性 0. 附上Python面向对象学习笔记上的链接: Python学习笔记(八)之面向对象编程(上) 1. 引言 上一节类比java的面向对象学习了Python中的面向对象的基础知识,以及在最后的总结中比较了一些Python和java中的面向对象的不同。 在java的学习中我了解到, 数据封装、继承和多态是面向对象的三大特点 ,所以在这一章节中,我将继续学习Python的继承和多态的语法和技巧,更加深入的了解Python的面向对象,依旧是类比java学习。 两天没有学习Python面向对象的知识了,所以现在稍微回顾一下上面学到的内容。 首先是定义一个类,可以通过 class 类名(继承自) 的方式定义一个新类; 接着自然是写一个构造函数了,所以 __init__ 函数登场了,在类的的函数中,默认会传入参数 self ,因为Python的构造函数只能有一个,所以参数的传入要比较谨慎的书写,可以通过 关键字参数 传入参数的方式来实现。 再者就是 数据封装 这个面向对象的三大特点之一