python继承

【Python】类及其常用操作

穿精又带淫゛_ 提交于 2020-01-30 07:06:58
类及其常用操作 创建类 在Python中,首字母大写的名称指的是类。 class Dog ( ) : """一次模拟小狗的案例""" def __init__ ( self , name , age ) : """初始化属性name和age""" self . name = name ; self . age = age ; def sit ( self ) : """模拟小狗蹲下""" print ( self . name . title ( ) + " is now sitting." ) def roll_over ( self ) : """模拟小狗打滚""" print ( self . name . title ( ) + " rollwd over!" ) 这里类定义中括号是空的,是因为要从空白创建这个类。 **方法__init__() **定义成了包含三个形参:self、name和age。形参self必不可少,还必须位于其他形参的前面。因为Python调用这个__init__()方法创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。 根据类创建实例 my_dog = Dog ( "willie" , 6 ) print ( "My dog's name is " +

python学习36:单例设计模式

那年仲夏 提交于 2020-01-29 22:51:45
设计模式: 设计模式是前人工作的总结和提炼。通常被人们广泛流传的设计模式都是针对某一特定问题的成熟解决方案。 使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。 单例设计模式: 目的:让类创建对象,在系统中只有唯一的一个实例(对象) 每一次执行类名()返回的对象内存地址是相同的 怎么保证这些对象只有一个? __new__方法:   我们用类名创建对象的时候,python解释器会帮我们做两件事情: 为对象分配空间 对象初始化   使用类名()创建对象时,,python解释器首先会调用__new__方法为对象分配空间。   __new__方法是一个由object基类提供的内置的静态方法,主要有两个作用:在内存中为对象分配空间;返回对象的引用。   python解释器获得对象的引用后,将引用作为第一个参数,传递给__init__方法(__new__负责给对象分配空间,__init__负责给对象初始化)。   重写__new__方法:继承自父类的方法;返回父类方法调用__new__方法的结果。重写__new__方法一定要return object. new (cls),否则python的解释器得不到分配了空间的对象引用,就不会调用对象的初始化方法。 class MusicPlayer ( object ) : instance = None def __new__ (

python学习35:多态

不羁岁月 提交于 2020-01-29 17:56:03
多态(以封装和继承为前提); 不同的子类对象调用相同的方法 产生不同的执行结果。 class Dog ( object ) : def __init__ ( self , name ) : self . name = name def game ( self ) : print ( '%s 开心的玩耍~' % ( self . name ) ) class Gaifei ( Dog ) : # 父类的方法不能满足子类的需求 重写game方法 def game ( self ) : print ( '%s和米老鼠一起玩~' % ( self . name ) ) class Person ( object ) : def __init__ ( self , name ) : self . name = name def game_with_dog ( self , dog ) : print ( '%s和%s玩~' % ( self . name , dog . name ) ) dog . game ( ) # 创建一个狗对象 wangcai = Dog ( '大黄' ) gou = Gaifei ( '高飞' ) # 创建一个人对象 xiaoming = Person ( '小明' ) # 让小明和狗玩 xiaoming . game_with_dog ( wangcai )

python中对object认识

ぐ巨炮叔叔 提交于 2020-01-29 12:42:50
在python中,我们定义个 类Test,Test继承了object,也就是说object是Test的基类(超类) class Test ( object ) : . . . pass 我们继续定义一个subTest类,subTest继承了Test类,但是又因为Test继承了object,因此可以说,subTest继承了object.在这里涉及到一个重要的知识点,那就是 继承具有传递性 。 class subTest ( Test ) : . . . pass 来源: CSDN 作者: NLP蜗牛 链接: https://blog.csdn.net/weixin_41845265/article/details/104104757

盏茶python(六) 类

北慕城南 提交于 2020-01-29 01:40:49
目录 1.为什么使用类 2.类的定义 2.1 类的命名 2.2 类的属性 2.3 类的方法 3.创建实例 3.1 实例的创建 3.2 访问属性 3.3 调用方法 3.4 属性修改 4.类的继承 4.1 简单的继承 4.2 给子类添加属性和方法 4.3 重写父类的方法-多态 盏茶python(一) 语言特性及环境配置 盏茶python(二) 基本数据类型 盏茶python(三) 组合数据类型 盏茶python(四) 控制流 盏茶python(五) 函数 盏茶python(六) 类 本节我们将要讲解python类的部分,主要包括类的定义、创建实例及类的继承等内容。 1.为什么使用类 面向对象的编程更符合人类对客观世界的抽象和解释。 2.类的定义 类的三要素为类的名称、属性及方法。 2.1 类的命名 类的命名常会使用驼峰命名法,如Dog,CreditCard,类的定义前后一般空出两行。 2.2 类的属性 类的属性初始化方法如下 # 初始化类的属性 # def __init__(self.要传递的参数) class Car(): def __init__(self, brand, model): self.brand = brand self.model = model 2.3 类的方法 类的方法定义如下 # 类的方法即类内部定义的函数 class Car(): def __init__

你可能不知道的 Python 技巧

会有一股神秘感。 提交于 2020-01-28 22:30:49
英文 | Python Tips and Trick, You Haven't Already Seen 原作 | Martin Heinz ( https://martinheinz.dev ) 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原文出处,请勿用于商业或非法用途。 有许许多多文章写了 Python 中的许多很酷的特性,例如变量解包、偏函数、枚举可迭代对象,但是关于 Python 还有很多要讨论的话题,因此在本文中,我将尝试展示一些我知道的和在使用的,但很少在其它文章提到过的特性。那就开始吧。 1、对输入的字符串“消毒” 对用户输入的内容“消毒”,这问题几乎适用于你编写的所有程序。通常将字符转换为小写或大写就足够了,有时你还可以使用正则表达式来完成工作,但是对于复杂的情况,还有更好的方法: user_input = "This\nstring has\tsome whitespaces...\r\n" character_map = { ord('\n') : ' ', ord('\t') : ' ', ord('\r') : None } user_input.translate(character_map) # This string has some whitespaces... " 在此示例中,你可以看到空格字符“ \n”和“ \t

python中关于私有属性继承的理解

做~自己de王妃 提交于 2020-01-28 18:11:03
转自: https://blog.csdn.net/qq_40315268/article/details/79553284 子类继承父类:可以继承父类的私有属性和方法,但是不能使用父类的私有属性和方法。 解释:书本中是子类继承父类,子类拥有父类的所有属性和方法, 通过程序验证发现父类的私有属性和私有方法子类不能访问。 于是你分析子类不能继承父类的私有属性和方法,但是分析内存后发现这样想是错误的。 在内存中:一个子类被创建的时候首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类对象。 总结:子类继承父类可以这样理解:子类对象确实拥有了父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问到的,只是拥有。 来源: CSDN 作者: 疯人张 链接: https://blog.csdn.net/MIC10086/article/details/104100594

魔法方法:定制序列+习题复习

谁说我不能喝 提交于 2020-01-28 17:30:23
##协议是什么? (常言道:“无规矩不成方圆”,讲的是万事万物的发展都要在一定的规则下去运行,只有遵循一定的协议去做,事情才能够往正确的道路去发展。我们今天要谈的是 定制容器,想要成功的实现容器的定制,我们要先谈一谈协议,那么什么是协议呢?协议是个什么东西呢) ※协议(Protocols)与其他编程语言中的 接口 很相似,它规定你哪些方法必须要定义。然而,在Python中的协议就显得不那么正式。事实上,在Python中,协议更像是一种指南。 ※就像之前提到的鸭子类型(DuckTyping):当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。忘记了可以回去看看鸭子类型 Python的鸭子类型(duck typing) ※ Python就是这样,它并不会严格要求你一定要怎样去做,而是靠你自觉和经验去把事情做得更好。 ##容器类型的协议 (在Python中,像序列类型,例如:列表,元组,字符串这些,或者说映射类型(例如:字典)都是属于容器类型,它们都是里面存放各式各样的对象。所以他们称为容器) ※如果说你希望定制的容器是不可变(例如元组、字符串)的话,你只需要定义__len__()和__getitem__()这两个魔法方法。 ※如果你希望定制的容器是可变的话,除了__len__()和__getitem__()方法,你还需要定义__setitem__(

Python基础20-面向对象:静态、组合、继承与派生、多态、封装、反射、内置attr方法等

无人久伴 提交于 2020-01-28 17:01:22
目录 静态 静态属性@property 类方法@classmethod 静态方法@staticmethod 组合 继承与派生 继承与派生 继承顺序 在子类中调用父类方法与super 多态 封装 反射 模块的动态导入 内置的attr方法 带双下户线的attr方法__setattr__、__getattr__、__delattr__ __getattr__方法的牛逼用法 继承方式完成包装 静态 静态属性@property 以类Room为例,Room类里面存储了width、length、height属性,面积、体积都是通过这些属性计算出来的,没有必要再存一份面积、体积。使用装饰器@property可以把有返回值的方法变成属性一样,这样减少了冗余,对调用者来说就像直接访问属性一样方便。这就是静态属性。 class Room: def __init__(self, name, owner, width, length, height): self.name = name self.owner = owner self.width = width self.length = length self.height = height pass @property def area(self): """ 计算面积 :return: 面积 """ return self.width * self

封装-python

北战南征 提交于 2020-01-28 06:44:17
六 封装 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,还有alex一起装进麻袋,然后把麻袋封上口子。但其实这种理解相当片面 首先我们要了解 回到顶部 6.1 要封装什么 你钱包的有多少钱(数据的封装) 你的性取向(数据的封装) 你撒尿的具体功能是怎么实现的(方法的封装) 回到顶部 6.2 为什么要封装 封装数据的主要原因是: 保护隐私 (作为男人的你,脸上就写着:我喜欢男人,你害怕么?) 封装方法的主要原因是:隔离复杂度(快门就是傻瓜相机为傻瓜们提供的方法,该方法将内部复杂的照相功能都隐藏起来了,比如你不必知道你自己的尿是怎么流出来的,你直接掏出自己的接口就能用尿这个功能) 你的身体没有一处不体现着封装的概念:你的身体把膀胱尿道等等这些尿的功能隐藏了起来,然后为你提供一个尿的接口就可以了(接口就是你的。。。,),你总不能把膀胱挂在身体外面,上厕所的时候就跟别人炫耀:hi,man,你瞅我的膀胱,看看我是怎么尿的。还有你的头把你的脑子封装到了脑壳里,然后提供了眼睛这个接口.... 提示:在编程语言里,对外提供的接口(接口可理解为了一个入口),就是函数,称为接口函数,这与接口的概念还不一样,接口代表一组接口函数的集合体。 回到顶部 6.3 封装分为两个层面 封装其实分为两个层面,但无论哪种层面的封装,都要对外界提供好访问你内部隐藏内容的接口(接口可以理解为入口