python继承

python中的type和object详解

青春壹個敷衍的年華 提交于 2019-11-28 04:13:56
python中的type和object详解 关于这篇博客 这篇博客主要描述Python的新风格对象(new-style objects),如下: <type 'type'>和<type 'object'>分别是什么? 用户自定义的类和实例之间是怎么联系的?它们和内置类型又是怎么联系的? 什么是元类(metaclasses)? New-style表明这篇博客所说的内容只适用于版本为2.2及以上的python。 开始之前 最主要,是理解type和object的区别与联系。我们平时用的最多的是Object,比如你定义一个类时,会继承object: >>> class Test(object): ... pass 这里你定义了一个自定义类 Test ,不难看出, Test 继承了 object ,也就是说, object 是 Test 的超类(或者说基类)。 接下来,你可以再定义一个类: >>> class subTest(Test): ... pass subTest 继承了 Test ,同时,因为 Test 继承了 object ,所以也可以说 subTest 继承了 object 。在这里涉及到一个重要的知识点,那就是 继承具有传递性 。如果你仔细观察,你会发现另外一个知识点,那就是: object 是所有类的超类 (这句话至关重要)。那type是什么呢?它是object的类型

python面向对象编程OOP

爱⌒轻易说出口 提交于 2019-11-28 02:56:06
学习自廖雪峰 https://www.liaoxuefeng.com/wiki/1016959663602400/1017496679217440 一、类与实例 面向对象的设计思想是抽象出Class,根据Class创建Instance。 class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print('%s: %s' % (self.name, self.score)) __init__下是类的 属性 ,print_score()是类的 方法 ,self指向创建的实例本身。在创建实例的时候, self 不需要传,Python解释器自己会把实例变量传进去。 二、访问限制 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的 name 、 score 属性。 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线 __ ,在Python中, 实例的变量名如果以 __ 开头 ,就变成了一个私有变量(private),只有内部可以访问,外部不能访问,所以

python基础之类和对象、对象之间的交互、类名称空间与对象/实例名称空间

不打扰是莪最后的温柔 提交于 2019-11-28 02:02:21
一 面向对象初识 Python要么是面向过程要么是面向对象。 概念及优缺点: 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。 优点是:极大的降低了程序的复杂度 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身。 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等。 面向对象的程序设计的核心是对象,要理解对象为何物,必须把自己当成上帝,上帝眼里世间存在的万物皆为对象,不存在的也可以创造出来。面向对象的程序设计好比如来设计西游记,如来要解决的问题是把经书传给东土大唐,如来想了想解决这个问题需要四个人:唐僧,沙和尚,猪八戒,孙悟空,每个人都有各自的特征和技能(这就是对象的概念,特征和技能分别对应对象的数据属性和方法属性),然而这并不好玩,于是如来又安排了一群妖魔鬼怪,为了防止师徒四人在取经路上被搞死,又安排了一群神仙保驾护航,这些都是对象。然后取经开始,师徒四人与妖魔鬼怪神仙交互着直到最后取得真经。如来根本不会管师徒四人按照什么流程去取。 面向对象的程序设计 优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中

python:对象属性与类属性

妖精的绣舞 提交于 2019-11-28 01:27:11
python 中的继承概念和 java 中的继承概念是不同。 从我个人角度来理解就是: python 中,类也是一个对象;实例可以继承类的属性。而 java 中,类并不是一个对象,只是一个对象的生成模板。实例的属性完全来自于类中对于属性的定义。 python 中类的属性,有点类似于 java 中的静态变量/静态属性。 下面看一个简单的例子: #!/usr/bin/env python # -*- coding: utf-8 -*- # @author : cat # @date : 2017/6/20. class MixData : data = 'spam' def __init__ (self, value) : self.data = value def disPlay (self) : print(self.data, MixData.data) if __name__ == '__main__' : x = MixData( 1024 ) x.disPlay() # 1024 spam 从打印结果可以得知: __init__(self,value) 中的 self.data = value 并没有改变类属性 MixData.data 的值,而仅仅是改变类该类的实例的属性。 为什么说 python 中,类也是对象,而 java 中类不是对象? 看如下代码: m =

python异常报错详解

空扰寡人 提交于 2019-11-28 01:17:20
异常BaseException 所有内置异常的基类。它不是直接由用户定义的类继承(为此使用Exception)。如果 str()或者unicode()是在这个类的一个实例上被调用,返回实例的参数表示形式,或者当没有参数时,返回空字符串。 新版本2.5。 args 给异常构造函数的元组元组。一些内置异常(如IOError)期望一定数量的参数,并为此元组的元素分配特殊含义,而其他异常通常仅使用单个字符串给出错误消息。 异常Exception 所有内置的非系统退出的异常都是从这个类派生出来的。所有用户定义的异常也应该从此类派生。 更改版本2.5:更改为继承BaseException。 异常StandardError 该基类除了所有内置例外StopIteration, GeneratorExit,KeyboardInterrupt和SystemExit。 StandardError本身源于Exception。 异常ArithmeticError 对于那些内置异常的基类时引发的各种算术错误:OverflowError,ZeroDivisionError, FloatingPointError。 异常BufferError 当无法执行缓冲区相关操作时引发。 异常LookupError 当映射或序列上使用的键或索引无效时引发异常的基类:IndexError,KeyError

Python复习总结(2)

萝らか妹 提交于 2019-11-28 00:16:35
SHYLearn_Python 3. 格式化输入与输出 3.1 格式化输入 a = input ( < info > ) a = input ( repr ( str ) ) 3.2 格式化输出 3.2.1 print语句 print ( a , b ) 同行以空格隔开输出 print ( a , b , s ep = ',' ) 以逗号隔开进行输出 print ( s , ewp = '\n' ) 以换行隔开进行输出 print ( name , end = '!' ) 每个输出都要添加! print ( ' i love %s ' % s ) print 格式化输出 # 对字符串的每个元素进行换行输出 for item in list : print ( item ) 3.2.2 字符串方法format() print ( '{0} : {1} : {2}' . format ( hour , minute , second ) ) # 按照对齐格式化进行排列 print ( '{0:3},{1:5}' . format ( 12 , 534 ) ) : 后面的内容为只等的格式,表示占位数,如果不够,在前面用空格补齐 3.2.3 数据输出的格式类型 # a表示占位,不够,按照原长度打印,多了左侧空格补齐,小数点后面为保留几位小数,f位数据类型 print ( 'i love

python学习——面向对象练习2

情到浓时终转凉″ 提交于 2019-11-28 00:05:37
1. 1-1 封装 把功能封装到类中 class Message(object): def email(self):pass def msg(self):pass def wechat(self):pass 初始化方法,把封装数据给其他方法使用 class Dog(object): def __init__(self,name): self.name = name def bulk(self): print("%s:wang wang wang" %self.name) 1-2 继承 class Father(object): def func1(self): print('in func1') class Son(Father): def func2(self): print('in func2') obj = Son() obj.func1() 1-3 多态 Python原生支持多态,所在多态在python中没有特殊性 2. 面向对象的变量:类变量,实例变量 类变量(静态字段) 公有类变量(静态字段) 私有类变量(私有静态字段( 实例变量(字段) 公有实例变量(字段) 私有实例变量(私有字段) class Foo: country = '中国' # 类变量 def __init__(self,name): self.name = name # 实例变量 obj1 = Foo(

python基础一 day27 复习

风格不统一 提交于 2019-11-27 23:57:24
# class 类名(父类1,父类2): # 静态属性 = '' # 静态属性 类属性 # def __init__(self): # 初始化方法 # self.name = 'alex' # # def func(self): # 动态属性 方法 # print(self.age) # 对象 = 类名() # 对象.方法名() # 对象.属性名 # 对象.name # 对象.age = 18 # 对象.func() #类名.func(对象) # 组合 :表达的是 什么有什么的关系 #***** # 一个类的属性 是另外一个类的对象 # class Teacher: # pass # class Course: # def __init__(self,name,price,period): # self.name = name # self.price = price # self.period = period # python = Course('python',19800,'6 months') # class Classes: # def __init__(self,name,course): # self.name = name # self.course = course # # self.course_name = 'python' # pys9 = Classes(

Python 类与对象

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-27 23:46:44
版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(String) Python 运算符 Python 列表(list) Python 元组(Tuple) Python 集合(Set) Python 字典(Dictionary) Python If … Else Python While 循环 Python For 循环 Python 函数 Python Lambda Python 类与对象 Python 继承 Python 迭代器(Iterator) Python 模块 Python 日期(Datetime) Python JSON Python 正则表达式(RegEx) Python PIP包管理器 Python 异常处理(Try…Except) Python 打开文件(File Open) Python 读文件 Python 写文件 Python 删除文件与文件夹 Python 类与对象 Python是一种面向对象的编程语言。 Python中,几乎所有东西都是一个对象。对象有属性和方法。 类是用于创建对象的“蓝图”。 创建类 要创建类,请使用关键字 class : 示例 创建一个名为 MyClass 的类,其属性名为x: class

python-子类构造函数调用super().__init__()

时光毁灭记忆、已成空白 提交于 2019-11-27 22:11:51
【super作用】 如果子类(Puple)继承父类(Person)不做初始化,那么会自动继承父类(Person)属性name。 如果子类(Puple_Init)继承父类(Person)做了初始化,且不调用super初始化父类构造函数,那么子类(Puple_Init)不会自动继承父类的属性(name)。 如果子类(Puple_super)继承父类(Person)做了初始化,且调用了super初始化了父类的构造函数,那么子类(Puple_Super)也会继承父类的(name)属性。 来源: https://www.cnblogs.com/nuonuozhou/p/11379997.html