python继承

python语言的鸭子类型和强类型语言的多态

匿名 (未验证) 提交于 2019-12-02 22:51:30
python语言的鸭子类型和强类型语言的多态   前面讲接口类的时候举过一个有关支付方式的例子,支付方式可以有几种,微信支付,支付宝支付,苹果支付等,这几个不同的支付都统一于支付,像这样几个类都统一于 某一个类或者某一个方法,或者说一个类有不同的形态的情况就属于多态;虽然几种支付方式都归一于支付类,执行的方法一样,但是每一个支付方式都有自己的特性,实现的 形态也不一样,即为多态性。 class Payment: # 必要的父类 def pay(self,money): pass class Wechatpay(Payment): # 子类继承父类 def pay(self,money): print('已经使用微信支付了%s元' % money) class Alipay(Payment): # 子类继承父类 def pay(self,money): print('已经使用支付宝支付了%s元' % money) class Aapplepay(Payment): # 子类继承父类 def pay(self,money): print('已经使用苹果支付了%s元' % money) def pay(pay_obj,money): # 受到父类的约束,这里的pay_obj只能传入继承了父类的子类 # 统一支付入口,归一化设计,不管使用哪种方式,都统一于支付方法 pay_obj.pay

Python:设计模式之工厂模式

匿名 (未验证) 提交于 2019-12-02 22:51:30
版权声明:本文为博主原创文章,欢迎转载,请注明出处 https://blog.csdn.net/mouday/article/details/91817823 工厂: 表示负责创建其他类型对象的类 优点: 1、松耦合,对象的创建可以独立于类的实现 2、客户端无需了解创建对象的类,但是可以使用它来创建对象。只需要知道需要传递的接口,方法和参数 3、工厂中添加其他类来创建其他类型的对象,无需更改客户端代码 4、工厂可以重用现有对象 分类 1、简单工厂模式 允许接口创建对象,但不会暴露对象的创建逻辑 2、工厂方法模式 允许接口创建对象,但使用哪个类来创建对象,则交由子类决定 3、抽象工厂模式 抽象工厂是一个能创建一系列相关对象,而无需指定/公开具体类的接口, 该模式能够提供其他工厂的对象,在其内部创建对象 简单工厂模式 # -*- coding: utf-8 -*- from abc import ABC , abstractmethod class Animal ( ABC ) : @abstractmethod def say_hi ( self ) : pass class Dog ( Animal ) : def say_hi ( self ) : print ( "汪汪汪..." ) class Cat ( Animal ) : def say_hi ( self ) :

Python多线程一学就会!

匿名 (未验证) 提交于 2019-12-02 22:51:08
Python中使用线程有两种方式:函数或者用类来包装线程对象。 函数式:调用thread模块中的start_new_thread()函数来产生新线程。语法如下: thread.start_new_thread ( function, args[, kwargs] ) 参数说明: function - 线程函数。 args - 传递给线程函数的参数,他必须是个tuple类型。 kwargs - 可选参数。 实例: #!/usr/bin/python# -*- coding: UTF-8 -*-import threadimport time# 为线程定义一个函数def print_time( threadName, delay): count = 0 while count < 5: time.sleep(delay) count += 1 print "%s: %s" % ( threadName, time.ctime(time.time()) )# 创建两个线程try: thread.start_new_thread( print_time, ("Thread-1", 2, ) ) thread.start_new_thread( print_time, ("Thread-2", 4, ) )except: print "Error: unable to start

Python的对象模型

匿名 (未验证) 提交于 2019-12-02 22:11:45
Python的对象模型 在Python中,任何对象多有类型,可以使用type()或者 __class__ 查看 但是类型也是对象即类对象,它也有自己的类型 所有新类型的缺省类型是type(可以使用元类来改变) 特殊类型type是所有对象的缺省类型,也包括type自己。但它又是一个对象,因此从object继承 特殊类型object是继承树的顶层,它是python所有类型的最终基类 也就是说,继承都来自object,类型都看type。type也是对象继承自object,object也有类型是type。 这俩又特殊,type类型是它自己,obkect没有基类 文章来源: https://blog.csdn.net/python_lqx/article/details/90644973

什么是python中的元类

匿名 (未验证) 提交于 2019-12-02 22:11:45
面向对象 作者:goodbody http://www.pythonheidong.com/blog/article/11/ www.pythonheidong.com 元类是类的类。就像类定义了类的实例的行为一样,元类定义了类的行为方式。类是元类的实例。 虽然在Python中你可以为元类使用任意的callables,实际上更有用的方法是使它成为一个真正的类本身。 type是Python中常用的元类。type它本身就是一个类,它是它自己的类型。 你将无法使用type在Python中重新创建纯粹的东西。 元类最常用作类工厂。 就像通过调用类创建类的实例一样,Python通过调用元类创建了一个新类(当它执行'class'语句时)。 结合 __init__ 和 __new__ 方法,元类因此允许您在创建类时执行“额外的事情”,例如使用某个注册表注册新类,或者甚至完全用其他内容替换类。 元类是通过查看待定类的基类(继承的元类),__metaclass__将要在类的属性(如果有)或__metaclass__全局变量来确定的。然后使用类的名称,基数和属性调用元类来实例化它。 但是,元类实际上定义了类的 类型 ,而不仅仅是它的工厂,所以你可以用它们做更多的事情。例如,您可以在元类上定义常规方法。这些元类方法就像类方法一样,因为它们可以在没有实例的类上调用,但它们也不像类方法

全面系统 Python3入门+进阶课程 更快上手实际开发

匿名 (未验证) 提交于 2019-12-02 22:11:45
第1章 Python入门导学 介绍Python的特性、优点、缺点、前景以及课程的内容、重点和特色。 第2章 Python环境安装 一键安装Python的编译环境,写出第一段Python代码 第3章 理解什么是写代码与Python的基本类型 本章详细介绍了Python的基本类型,包括整形、浮点型;10、8、2、16进制数的意义和转换关系;布尔类型;字符串与字符串常见运算操作 第4章 Python中表示“组”的概念与定义 本章详细讲解了“组”的概念,以及在Python中用来表示“组”的一些类型,包括:元组、列表、集合和字典。 第5章 变量与运算符 本章详细讲解变量的意义与七种运算符,并对每一种运算符的扩展做出详细的讲解 第6章 分支、循环、条件与枚举 本章是代码的基本逻辑结构,包括条件控制(if else)、循环控制(for in 、while)、表达式与运算符的优先级。此外,我们还将在这一章讲解Python的枚举类型。此外,我们还将对Python编码的规范做出讲解。 第7章 包、模块、函数与变量作用域 本章对Python代码的组织结构核心:包、模块与函数分别作出讲解。学习完本章后你将对Python代码的组织结构有一个非常清晰的认识。重点是函数,我们除了讲解函数的基本概念外,还将讲解Python灵活的函数参数机制(默认参数、关键字参数与列表参数)。... 第8章 Python函数

用Python实现数据结构之树

匿名 (未验证) 提交于 2019-12-02 22:11:45
树 树是由根结点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或称为树根。 相关概念 根节点:树中最顶部的元素 父节点:处了根节点都有父节点,每个节点最多只有一个父节点 孩子节点:一个父节点具有0个或多个孩子节点 兄弟节点:同一个父节点的孩子节点之间是兄弟关系 外部节点:一个没有孩子的节点称为外部节点,也叫叶子结点 内部节点:有一个或多个孩子节点的节点叫做内部节点 树的边:指一对节点(u,v),其中u是v的父节点或者v是u的父节点 树的路径:一系列连续的边组成了一条路径 节点的深度:节点的深度就是该节点的祖先的个数,不包括该节点本身,如果根节点的层数为1,则深度即为该节点的层数-1 节点的高度:如果p是树中的叶子节点,那么它的高度为0.否则p的高度是它的孩子节点中的最大高度+1 有序树:每个孩子之间有一定的顺序,例如: 一个树的抽象基类 class Tree(): """ 树的抽象基类 """ # 叫做位置的内嵌类,用于封装节点 class Position(): def element(self): raise NotImplementedError('must be implemented by

python 类之间的关系

匿名 (未验证) 提交于 2019-12-02 22:11:45
类与类之间的关系 1. 依赖关系 class Plant: def __init__(self,zhonglei,xue,gongjili): self.zhonglei = zhonglei self.xue = xue self.gongjili = gongjili def da(self,js): print("植物打僵尸") js.xue -= self.gongjili if js.xue <= 0: print("僵尸死亡") else: print(f"僵尸掉血{self.gongjili},僵尸还剩{js.xue}血") class Jiang: def __init__(self,zhonglei,xue,gongjili): self.zhonglei = zhonglei self.xue = xue self.gongjili = gongjili def chi(self,zw): print("僵尸咬植物") zw.xue -= self.gongjili if zw.xue <= 0: print("植物死亡") else: print(f"植物掉血{self.gongjili},植物还剩{zw.xue}血") p = Plant("豌豆",1000,300) j = Jiang("路障",1800,200) p.da(j) p.da(j) p.da

Python里的类和对象简介

匿名 (未验证) 提交于 2019-12-02 22:11:45
Python里的类 对象的属性主要是指 主要的特征和参量,而方法主要是指函数; 类是一个具有一定特征和方法的集合,而对象是类的一个; 类的创立一般以 大写字母 为开头 类的创立举例如下: class T urtle: % 特征参量: 方法 def climb(self): OO:面向对象( Object Oriented),python是一种纯粹的面向对象的编程语言 面向对象编程的特征: (1)封装 (2)继承 (3)多态 例如: >>> class 继承 >>> list2=Mylist() >>> list2.append(2) >>> list2 [2] >>> class A: >>> class B: >>> a=A() >>> b=B() 多态 woshixiaoa >>> b.fun() 整体封装 三者之间的关系如下图所示:

python中的__new__、__init__和__del__

匿名 (未验证) 提交于 2019-12-02 22:11:45
__new__、__init__、__del__三个方法用于实例的创建和销毁,在使用python的类中,我们最常用的是__init__方法,通常称为构造方法,__new__方法几乎不会使用,这篇文章是基于Python3.6为基础来做实验,主要谈一谈python的__new__和__init__,__init__ 通常称为构造方法,但其实它是个“初始化方法”,真正的构造方法是 __new__, __init__既然是初始化方法,那么肯定是对对象的初始化,也就是存在一个被初始化的对象 来看第一个例子: class inch(): def __init__(self): print("__init__") def __new__(cls): print("__new__ ") print("__new__ ")__new__None 因为我们 没有从__new__返回任何结果,__init__这里不会调用 。如果init被调用,我们就会看到我们在init中的打印语句。 再看第二个例子: class inch(): def __new__(cls): print("__new__ ") print(super(inch, cls).__new__(cls)) return super(inch, cls).__new__(cls) def __init__(self): print("_