python继承

python中什么是元类

倖福魔咒の 提交于 2019-12-01 15:06:47
简单的讲, 元类创建了Python中所有的对象。 我们说 Python是一种动态语言,而动态语言和静态语言最大的不同,就是函数和类不是编译时定义的,而是运行时动态创建的 。 比方说我们要定义一个 HelloWorld 的class,就写一个 helloworld.py 模块: class HelloWorld(object): def helloworld(self): print('Hello World!') 当Python解释器载入 helloworld 模块时,就会依次执行该模块的所有语句,执行结果就是动态创建出一个 HelloWorld 的class对象,测试如下: >>> from helloworld import HelloWorld >>> h = HelloWorld() >>> h.helloworld() Hello, world! >>> print(type(HelloWorld)) <class 'type'> >>> print(type(h)) <class 'helloworld.HelloWorld'> type() 函数用来查看一个类型或变量的类型, HelloWorld 是一个class,它的类型就是 type ,而 h 是一个实例,它的类型就是class Helloworld 。 我们说 class的定义是运行时动态创建的

Python笔记:工厂模式

为君一笑 提交于 2019-12-01 14:02:20
工厂模式: “工厂”即表示一个负责创建其他类型的对象的类,通常情况下,一个工厂的对象会有一个或多个方法与之关联,这些方法用于创建不同类型的对象,工厂对象会根据客户端给方法传递的不同的参数或者客户端调用不同的方法返回不同的对象。 优点: 对象的创建是可以根据需要单独创建的,但是使用工厂模式来创建对象有以下优点: 松耦合,对象的创建是根据工厂类来进行的,与类本身的实现是独立开来的。 对于客户端来说,不需要知道类的具体实现,只需要调用相应接口就可以得到需要的对象了,这其实是简化了客户端的相关实现。 对于对象的修改只需要在工厂里面进行即可,包括添加新的对象,客户端只需要更改少量的代码,甚至可以不修改代码就可以达到要求。 使用工厂接口,还可以重用已有的对象,不用去别处调用已有的对象或者重新创建一个对象。 工厂模式的3种实现形式(或者说3中变体): 简单工厂模式: 工厂类会提供一个接口,并根据客户端传入参数来创建相应的实例对象。(创建一个对象) 工厂方法模式: 需要定义一个基类,不同的子类则代表着不同类型的对象。相对于简单工厂模式而言,工厂方法模式具有更强的可定制性。(创建一个对象) 抽象工厂模式: 需要定义一个抽象工厂类,然后由不同的子类来创建不同系列的对象,一个系列即代表一组对象。(创建一组对象) 简单工厂模式示例: from abc import ABCMeta,

关于人工智能和python

别说谁变了你拦得住时间么 提交于 2019-12-01 13:48:40
人工智能的话题在近几年可谓是相当火热,前几天看快本时其中有一个环节就是关于人工智能的,智能家电、智能机器人、智能工具等等,在我的印象里,提到人工智能就会出现 Python,然后我便在网上查找了相关信息,并整合了一下。 人工智能 人工智能,英文缩写为AI,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学;是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。 Python Python 是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。 之间的关系 而一般说起人工智能都认为是用 Python 语言实现的,就如我之前说的,但查完资料发现,的确大部分的人工智能的代码都是使用 Python 来编写,写人工智能代码时需要用到许多框架工具和库,这些大部分都是 Python 提供的,Python是这些库的API binding,但并不能因为这样就认为人工智能就是靠 Python 写的,Python 是解释语言,速度比较慢,它只是调用 AI接口,而人工智能核心算法是完全依赖于 C/C++ 这类编译语言

Python 异常处理

廉价感情. 提交于 2019-12-01 12:48:04
原文:https://www.runoob.com/python/python-exceptions.html Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 异常处理: 本站Python教程会具体介绍。 断言(Assertions):本站Python教程会具体介绍。 python标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError 所有数值计算错误的基类 FloatingPointError 浮点计算错误 OverflowError 数值运算超出最大限制 ZeroDivisionError 除(或取模)零 (所有数据类型) AssertionError 断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类

类特殊成员(属性和方法)

你说的曾经没有我的故事 提交于 2019-12-01 12:47:23
Python下划线命名模式 - 小结 以下是一个简短的小结,即"速查表",罗列了我在本文中谈到的五种Python下划线模式的含义: 因为python中所有类默认继承object类。而object类提供了了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性。可以使用dir()函数可以查看,虽然python提供了很多内建属性但实际开发中常用的不多。而很多系统提供的内建属性实际开发中用户都需要重写后才会使用。对于python来说,属性或者函数都可以被理解成一个属性 [root@kube method]# cat demo2.py class Person: pass print(dir(Person)) #使用dir 函数查看内建属性 [root@kube method]# py demo2.py ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '_

python学习,day5:面向对象

吃可爱长大的小学妹 提交于 2019-12-01 12:20:47
面向对象介绍 世界万物,皆可分类 世间万物,皆为对象 只要是对象,就肯定属于某种品类 只要是对象,就肯定有属性 例子: 人:思考,说话,吃喝拉撒。 特性: class类 一个类及时对一类拥有相同属性的抽象、蓝图、原型。在类中定义了这些对象的都具有的属性(variables(data)),共同方法 object对象 一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像 人类是指所有人,每个人是指具体的对象, 人与人之间有共性,亦有不同。 封装 在类中对数据的赋值,内部调用外部用户是透明的,这使类变成了一个胶囊或器官,里面包含着累的数据和方法。 继承 一个类可以派生出自雷,在这个父类里定义的属性,方法自动被自雷集成 多态 一个接口,多种实现 语法: 属性 方法 构造函数 析构函数 私有方法,私有属性 类变量 实例变量 来源: https://www.cnblogs.com/bbgoal/p/11685226.html

Python - 面向对象 - 第二十天

穿精又带淫゛_ 提交于 2019-12-01 12:08:49
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。 接下来我们先来简单的了解下面向对象的一些基本特征。 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 方法: 类中定义的函数。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 局部变量: 定义在方法中的变量,只作用于当前实例的类。 实例变量: 在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。 继承: 即一个派生类(derived class)继承基类(base class)的字段和方法

python中继承父类的例子(python3的语法)

限于喜欢 提交于 2019-12-01 12:03:11
#coding=utf8 class Cup:   #构造函数,初始化属性值   def __init__(self,capacity,color):     self.capacity=capacity     self.color=color   def retain_water(self):     print("杯子颜色:"+self.color+",杯子容量:"+self.capacity+",正在装水.")   def keep_warm(self):     print("杯子颜色:"+self.color+",杯子容量:"+self.capacity+",正在保温.") class Luminous_Cup(Cup):   #构造函数,调用父类的构造函数初始化属性值   def __init__(self,capacity,color):     super().__init__(capacity,color)   def glow(self):     print("我正在发光...") currentCup=Luminous_Cup('300ml','翠绿色') currentCup.retain_water() currentCup.glow() 来源: https://www.cnblogs.com/xiaoxiaoshuaishuai0219/p

python中的MRO算法[转]

左心房为你撑大大i 提交于 2019-12-01 11:56:23
1.前言 MRO(Method Resolution Order):方法解析顺序 。 对于支持继承的编程语言来说,其方法(属性)可能定义在当前类,也可能来自于基类,所以在方法调用时就需要对 当前类和基类进行搜索以确定方法所在的位置。而搜索的顺序就是所谓的「方法解析顺序」(Method Resolution Order,或MRO)。对于只支持单继承的语言来说,MRO 一般比较简单;而对于 Python 这种支持多继承的语言来 说,MRO 就复杂很多。 2.菱形继承范例 如果 x 是 D 的一个实例,那么 x.show() 到底会调用哪个 show 方法呢?如果按照 [D, B, A, C] 的搜索顺序,那么 x.show() 会调用 A.show();如果按照 [D, B, C, A] 的搜索顺序,那么 x.show() 会调用 C.show()。由此可见,MRO 是把类的继承关系线性化的一个过程,而线性化方式决定了程序运行过程中具体会调用哪个方法。既然如此,那什么样的 MRO 才是最合理的?Python 中又是如何实现的呢? 3.Python 中三种不同的 MRO 经典类(classic class)的深度遍历。 Python 2.2 的新式类(new-style class)预计算。 Python 2.3 的新式类的C3 算法。它也是 Python 3 唯一支持的方式。 3

Python_类的继承

牧云@^-^@ 提交于 2019-12-01 11:51:13
1.新建子类时,括号内要传入继承的父类名 2.super()方法:自动寻找当前类的父类,并调用父类的构造函数,初始化属性值 class Cup: #构造函数,初始化属性值 def __init__(self,capacity,color): self.capacity=capacity self.color=color def retain_water(self): print("杯子颜色:"+self.color+",杯子容量:"+self.capacity+",正在装水.") def keep_warm(self): print("杯子颜色:"+self.color+",杯子容量:"+self.capacity+",正在保温.") class Luminous_Cup(Cup): #构造函数,调用父类的构造函数初始化属性值 def __init__(self,capacity,color): super().__init__(capacity,color) def glow(self): print("我正在发光...") currentCup=Luminous_Cup('300ml','翠绿色') currentCup.retain_water() currentCup.glow() 来源: https://www.cnblogs.com/myfy/p/11684089