python继承

Python中面向对象编程(OOP)的概述

我的梦境 提交于 2019-12-17 00:23:40
一.面向对象概述 面向对象编程:Object Oriented Programming(简称OOP) 1、面向对象的概念 <1>面向对象侧重于由谁来做这件事,相比较函数,面向对象是一个更大的封装,根据职责在一个“类”中封装多个“方法”。 <2>完成某一个需求前,首先确定要做的事(这些事就是“方法”) <3>根据职责确定不同的“对象”,在“对象”内部封装不同的“方法”(多个) <4>最后完成代码,就是顺序的让不同的“对象”调用不同的“方法” 2、面向对象的特点 <1>注重对象和职责,不同的对象承担的职责不同 <2>更加适合复杂的需求变化 <3>需要在面向过程的基础上,学一些面向对象的语法 3、补充:面向过程的概念 <1>侧重于怎么做这件事 <2>把完成某一个需求的所有步骤从头到尾逐步实现 <3>根据开发要求,将某些功能独立的代码封装成一个又一个函数 <4>最后完成代码,就是顺序的调用不同的函数 二.面向对象的 核心概念 面向对象有两个核心概念,一个是 类 ,一个是 对象 1、 类 (1)什么是类 “类”是一类具有相同特征或行为的事物的一个统称。 比如各种人都属于“人”,各种品种的猫都属于“猫”,各种动物都属于“动物”等。 (2)类由什么构成 理解举例:马冬梅今年19岁,身高170cm,鞋码38,喜欢早上吃包子,喜欢跑步。 <1> 属性 属性是这一类事务的共同信息,特征之类。 如例句中

python类属性和方法,静态方法,设计模式

泄露秘密 提交于 2019-12-16 23:15:36
类属性和方法,静态方法,设计模式 类属性和类方法 类属性:针对类定义的属性,使用赋值语句在class关键字下可以定义类属性 类方法:针对类定义的方法,在类方法内部可以直接访问类属性或调用用其他的类方法 class Toy ( object ) : count = 0 #使用赋值语句定义属性,记录所有的玩具数量 def __init__ ( self , name ) : self . name = name Toy . count += 1 @ classmethod def show_toy_count ( cls ) : print ( '玩具的数量%d' % ( Toy . count ) ) toy1 = Toy ( '小猫' ) toy2 = Toy ( '小狗' ) toy3 = Toy ( '小熊' ) Toy . show_toy_count ( ) #静态方法可以直接用类名调用方法名 其中@classmethod是类方法 静态方法 静态方法,不需要创建对象,直接 (类名.方法名) 就可以直接调用,但是需要写入@staticmethod关键字 class Cat ( object ) : @ staticmethod def call ( ) : print ( '喵喵' ) # 通过类名.方法名 调用静态方法 Cat . call ( ) # 不需要创建对象

【python】self用法详解

非 Y 不嫁゛ 提交于 2019-12-16 19:27:59
在介绍Python的self用法之前,先来介绍下Python中的类和实例 我们知道,面向对象最重要的概念就是类(class)和实例(instance)。 类是抽象的模板,比如学生这个抽象的事物,可以用一个Student类来表示。 而实例是根据类创建出来的一个个具体的“对象”,每一个对象都从类中继承有相同的方法,但各自的数据可能不同。 1、以Student类为例,在Python中,定义类如下: class Student(object): pass (Object)表示该类从哪个类继承下来的,Object类是所有类都会继承的类。 2、实例:定义好了类,就可以通过Student类创建出Student的实例,创建实例是通过类名+()实现: student = Student() 3、由于类起到模板的作用,因此,可以在创建实例的时候,把我们认为必须绑定的属性强制填写进去。这里就用到Python当中的一个内置方法 __init__ 方法 例如在Student类时,把name、score等属性绑上去: class Student(object): def __init__(self, name, score): self.name = name self.score = score 注意:(1) __init__ 方法的第一参数永远是 self ,表示创建的类 实例本身 ,因此,在 _

六. python面向对象(内置函数)

拥有回忆 提交于 2019-12-16 17:24:14
一. 内置函数 1.@property(用于场景方法不要传递参数 且有return可以使用 就是普通函数) property 内置装饰器函数 只在面向对象中使用 函数的作用是在新式类中返回属性值。 from math import pi print(pi) class Circle: def __init__(self,r): self.r=r def per(self): # 周长 return 2*pi*self.r def aer(self): # 面积 return self.r**2*pi aa=Circle(3) print(aa.per()) print(aa.aer()) from math import pi # property() 函数的作用是在新式类中返回属性值。 把方法伪装成属性了 class Circle: def __init__(self, r): self.r = r @property # @property 把方法伪装成属性了 def per(self): # 周长 使用 @property 伪装成属性 不能单参数 return 2 * pi * self.r @property def aer(self): # 面积 return self.r ** 2 * pi aa = Circle(3) print(aa.per) #

python继承小demo

佐手、 提交于 2019-12-16 12:12:42
# -*- coding: utf-8 -*- """ 继承的意义:实现代码重用,数据函数都可以重用 子类覆盖,子类与父类同名 选择性继承 super().__init__()可以减少重复构造,节约资源 """ class Wangjianlin(object): """大家好,我是大连王健林""" def __init__(self): self.motto = "我是王健林,我的人生格言是,先定个小目标,赚他一个亿" self.money = 200e8 def working(self): print("疯狂工作") class Wangsicong(Wangjianlin): def __init__(self): #Wangjianlin是类型,调用方法需要self,super()是一个对象 #Wangjianlin.__init__(self)#这种方式在频繁创建对象时比较消耗内存 super().__init__() self.motto = "我是王思聪,我的人生格言是,我交朋友不看钱,因为谁都没有我有钱" def working(self): print("我有钱,想泡谁就泡谁") if __name__ == "__main__": #继承测试 wangjianlin = Wangjianlin() print(wangjianlin.money,

effective python 读书笔记-第22条: 尽量用辅助类来维护程序的状态,而不要用字典

强颜欢笑 提交于 2019-12-16 10:15:39
第22条: 尽量用辅助类来维护程序的状态,而不要用字典 带着问题学习 如何使用字段维护程序的状态? 如何使用辅助类为辅程序的状态? 有没有更好的方式? 总结 1.1 使用字典维护程序的状态(简单示例) 需求: 记录学生的名字,记录学生对应的科目(假设一个科目)的多次成绩 代码实现: class SimpleGradebook(object): def __init__(self): self.grades = {} def add_student(self, name): if name in self.grades: raise ValueError('no named {}'.format(name)) self.grades[name] = [] def report_grade(self, name, score): if name not in self.grades: raise ValueError('no named {}'.format(name)) self.grades[name].append(score) def average_grade(self, name): grades = self.grades[name] return sum(grades) / len(grades) book = SimpleGradebook() book.add

Python 入门之Python简介

元气小坏坏 提交于 2019-12-16 07:21:40
1、Python简介: (1) Python的出生: ​ python的创始人为吉多·范罗苏姆(Guido van Rossum)(中文名字:龟叔)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 ​ 2019年6月的TIOBE排行榜,Python占据第三的位置, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。 (2)Python的主要应用领域: <1>、 云计算: ​ 云计算最火的语言, 典型应用OpenStack <2>、 Web开发: ​ 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。典型WEB框架有Django <3>、 科学运算、人工智能: ​ 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas <4>、 系统运维: ​ 运维人员必备语言 <5>、 爬虫: ​ 通过代码来模拟人进行页面访问,对信息进行批量的获取 <6>、 金融: ​ 量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很厉害,生产效率远远高于c,c++,java,尤其擅长策略回测

python---方法解析顺序MRO Method Resolution Order以及解决类中super方法

限于喜欢 提交于 2019-12-16 07:03:46
目录 MRO了解: 而具体讨论MRO,我们需要针对不同python版本中的MRO进行解析   一:经典类(深度优先搜索)   二:新式类(广度优先搜索)   三:新式类(C3算法实现:看起来就是将上面两者的优点结合了。所以在Python3中全部都是新式类,不需要object继承)   四:C3算法了解 下面讨论__init__和super()方法的关系   一:在单继承中super方法和__init__使用时功能上基本是无差别的   二:super方法只在新式类中适用   三:注意super()不是父类,而是执行MRO顺序中的下一个类!!   四:super()可以避免重复调用 MRO了解: 对于支持继承的编程语言来说,其方法(属性)可能定义在当前类,也可能来自于基类,所以在方法调用时就需要对当前类和基类进行搜索以确定方法所在的位置。 而搜索的顺序就是所谓的「方法解析顺序」(Method Resolution Order,或MRO)。 对于只支持单继承的语言来说,MRO 一般比较简单;而对于 Python 这种支持多继承的语言来说,MRO 就复杂很多。 而具体讨论MRO,我们需要针对不同python版本中的MRO进行解析 经典类:DFS深度优先搜索(Python2.2以前的版本) 新式类:BFS广度优先搜索(Python2.2中提出,在与经典类共存的情况下

Python - Linux下多版本安装工具 - pyenv

瘦欲@ 提交于 2019-12-15 21:24:45
官网 https://github.com/pyenv/pyenv 快捷安装 https://github.com/pyenv/pyenv#the-automatic-installer # yum install git curl python编译依赖如下 # yum install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel 创建普通用户 # useradd python # su - python 在python用户下安装 $ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 由于某些原因,浏览器可以访问,大家自行下载保存为shell脚本执行 https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer 或者使用项目源码文件 https://github.com/pyenv/pyenv-installer/blob/master/bin/pyenv-installer 以后更新pyenv使用 $ pyenv

python自学第25天 python基础 2019.12.15

强颜欢笑 提交于 2019-12-15 17:29:45
从今天开始学习一本电子书,扎实基本功,不三心二意,跳跃式学习了。 python之小白太玄晶。 本书共16章 1,开胃菜 2,使用python解释器 2.1调用python解释器 2.1.1参数传递 2.1.2交互模式 2.2解释器及其环境 2.2.1源程序编码 3,python简介 3.1,将python当作计算器 3.1.1数字 3.1.2字符串 3.1.3列表 4,深入python流程控制 4.1,if语句 4.2,for语句 4.3,range()函数 4.4,break和continue语句,以及循环中的else子句 4.5,pass语句 4.6,定义函数 4.7,深入python函数定义 4.7.1,默认参数值 4.7.2,关键参数 4.7.3可变参数列表 4.7.4参数列表的分拆 4.7.5Lambda形式 4.7.6,文档字符串 4.7.7,函数注解 4.8,插曲:编码风格。 5数据结构 5.1关于列表更多的内容 5.1.1把列表当作堆栈使用 5.1.2把列表当作队列使用 5.1.3列表推导式 5.1.4嵌套的列表推导式 5.2 del语句 5.3元组和序列 5.4集合 5.5字典 5.6循环技巧 5.7深入条件控制 5.8比较序列和其他类型 6模块 6.1深入模块 6.1.1 作为脚本来执行模块 6.1.2模块的搜索路径 6.1.3“编译的”python文件 6