python继承

python_面向对象

非 Y 不嫁゛ 提交于 2019-12-06 05:12:11
一、面向对象 1、面向对象简介: 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员: 类变量或者实例变量, 用于处理类及其实例对象的相关的数据。 方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 局部变量: 定义在方法中的变量,只作用于当前实例的类。 实例变量: 在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。 继承: 即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。 实例化: 创建一个类的实例,类的具体对象。 方法: 类中定义的函数。 对象: 通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。 静态方法: 只是写在类里面的一个方法,不能使用类变量,调用不了其他类的方法 实例方法:

python 接口类、抽象类、多态

感情迁移 提交于 2019-12-06 04:30:40
参考https://www.cnblogs.com/Fantac/p/11481114.html 接口类和抽象类总结 在python中没有接口类,但有抽象类;abc模块中的metaclass = ABCMeta,@abstractmethod它的本质是做代码的规范用的,希望子类中能实现父类名字完全一样的方法 接口类和抽象类: 从java的角度上看是有区别的,java本来就支持单继承所以就有了抽象类;java没有多继承,所以为了接口隔离原则,设计了接口这个概念,支持多继承了 而python它既支持单继承也支持多继承,所以对于接口类和抽象类的区别就不会那么明显了,甚至在python中没有内置接口类 多态 多态指的是一类事物有多种形态 python天生支持多态 from abc import abstractmethod,ABCMeta class Payment(metaclass=ABCMeta): #支付方式类 @abstractmethod def pay(self,money): pass class Wechat(Payment): #支付方式---微信支付 def pay(self,money): print('已经用了微信支付了%s元'%money) class Alipay(Payment): #支付方式---支付宝支付 def pay(self,money):

Python【day 16-1】面向对象初识

限于喜欢 提交于 2019-12-06 01:40:01
1、面向对象思想 1、面向过程 1、概念 按照事物的发展流程,第一步,第二步,第三步,一步步往下 2、优缺点 1、优点 简单,流水线式的 2、缺点 可扩展性差 2、面向对象 1、概念 对象:是属性和动作的集合体 事物-东西-对象 1、属性:对象的特性、特点 2、动作:对象能做什么 2、优缺点 1、优点 可扩展性好 2、缺点 编写相对复杂一点2、面向对象如何编写 1、定义类 1、代码中的类,就相当于盖房子的图纸,或者汽车设计的图纸 2、写法 class 类名: def __init__(self): pass def 普通方法名(self): pass 2、构造方法 def __init__(self,属性1,属性2): self.属性1 = 属性1 self.属性2 = 属性2 3、普通方法 def 普通方法名(self[,形参列表]): pass 4、对象调方法 self:表示当前正在执行动作的对象 对象名 = 类名() #新建对象,自动调构造方法 对象名.方法名() 类名.方法名(对象名[,实际参数])3、面向对象和面向过程的对比 都是设计思想,一般来说,简单的适合面向过程,复杂的适合面向对象 最终还是要结合不同的业务逻辑,来决定采用哪种思想4、面向对象的三个特点 1、封装 把具有相同属性和功能的内容封装到一个对象中 狭义的理解:创建对象的时候,传入实际参数

python类定义的讲解

主宰稳场 提交于 2019-12-05 23:53:18
python是怎么定义类的,看了下面的文章大家就会了,不用多说,开始学习。 一、类定义: 复制代码代码如下: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象 类的私有属性:   __private_attrs 两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs 类的方法   在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数 私有的类方法   __private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用slef.__private_methods 类的专有方法: init 构造函数,在生成对象时调用 del 析构函数,释放对象时使用 repr 打印,转换 __setitem__按照索引赋值 __getitem__按照索引获取值 __len__获得长度 __cmp__比较运算 __call__函数调用 __add__加运算 __sub__减运算 __mul__乘运算 __div__除运算 __mod__求余运算 __pow__称方 复制代码代码如下: 类定义 class

python之多态、抽象类、鸭子类型

风格不统一 提交于 2019-12-05 23:45:38
''' 1.什么是多态? 多态指的是同一类型的事物,不同的表现形式。 2.多态的目的: 多态 也称为多态性,目的是为了在不知道对象的具体类型的情况下,同一调用属性或方法的规范。 继承是实现多态的方法之一。 - 先抽象,再继承 父类:定制一套统一的规范 子类:遵循父类统一的规范。 注意:再python中不会强制限制子类必须遵循父类的规范。(要引入抽象类) ''' class Animal: def eat(self): pass def bark(self): pass class Tiger(Animal): def eat(self): print(self.__class__.__name__, 'is eating something') def bark(self): print(self.__class__.__name__, 'is barking...') class Cat(Animal): def eat(self): print(self.__class__.__name__, 'is eating something') def bark(self): print(self.__class__.__name__, 'is barking...') class Lion(Animal): def eat(self): print(self.__class__._

Python拼接字符串的七种方式

末鹿安然 提交于 2019-12-05 23:28:34
忘了在哪看到一位编程大牛调侃,他说程序员每天就做两件事,其中之一就是处理字符串。相信不少同学会有同感。 几乎任何一种编程语言,都把字符串列为最基础和不可或缺的数据类型。而拼接字符串是必备的一种技能。今天,我跟大家一起来学习Python拼接字符串的七种方式。 1、来自C语言的%方式 print('%s %s' % ('Hello', 'world')) >>> Hello world %号格式化字符串的方式继承自古老的C语言,这在很多编程语言都有类似的实现。上例的%s是一个占位符,它仅代表一段字符串,并不是拼接的实际内容。实际的拼接内容在一个单独的%号后面,放在一个元组里。 类似的占位符还有:%d(代表一个整数)、%f(代表一个浮点数)、%x(代表一个16进制数),等等。%占位符既是这种拼接方式的特点,同时也是其限制,因为每种占位符都有特定意义,实际使用起来太麻烦了。 2、format()拼接方式 # 简洁版 s1 = 'Hello {}! My name is {}.'.format('World', 'Python猫') print(s1) >>>Hello World! My name is Python猫. # 对号入座版 s2 = 'Hello {0}! My name is {1}.'.format('World', 'Python猫') s3 = 'Hello

pytorch源码解析:Python层 pytorchmodule源码

徘徊边缘 提交于 2019-12-05 21:44:00
尝试使用了pytorch,相比其他深度学习框架,pytorch显得简洁易懂。花时间读了部分源码,主要结合简单例子带着问题阅读,不涉及源码中C拓展库的实现。 一个简单例子 实现单层softmax二分类,输入特征维度为4,输出为2,经过softmax函数得出输入的类别概率。代码示意:定义网络结构;使用SGD优化;迭代一次,随机初始化三个样例,每个样例四维特征,target分别为1,0,1;前向传播,使用交叉熵计算loss;反向传播,最后由优化算法更新权重,完成一次迭代。 import torch import torch.nn as nn import torch.nn.functional as F class Net (nn.Module): def __init__ (self): super(Net, self).__init__() self.linear = nn.Linear( 4, 2) def forward (self, input): out = F.softmax(self.linear(input)) return out net = Net() sgd = torch.optim.SGD(net.parameters(), lr= 0.001) for epoch in range( 1): features = torch.autograd

python中的组合

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 20:10:23
python中的组合 什么是组合:组合指的是一个对象中,包含另一个对象。 为什么要用组合:减少代码冗余 如何使用组合: # 实现组合​class People: def __init__(self, name , age, sex): self.name = name self.age = age self.sex = sex​# 老师类class Teacher(People): def __init__(self, name, age, sex): super().__init__(name, age, sex)​# 日期类class Date: def __init__(self, year, month, day): self.year = year self.month = month self.day = day​ def tell_birth(self): print(f''' 年:{self.year} 月:{self.month} 日:{self.day} ''')​​s1 = Teacher('wanglu', 18, 'female')d1 = Date(1997, 1, 29)s1.d1 = d1d1.tell_birth()print(s1.d1.tell_birth()) 总结: 继承: 继承是类与类的关系,子类继承父类的属性,子类与父类是一种‘从属

Python初始

家住魔仙堡 提交于 2019-12-05 20:01:32
一,Python介绍 1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 (龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到现在,依然掌握着Python发展的核心方向,被称为仁慈的独裁者)。 目前Python主要应用领域 云计算 : 云计算最火的语言, 典型应用OpenStack WEB开发 : 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django 科学运算、人工智能 : 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas 系统运维 : 运维人员必备语言 金融 :量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测 图形GUI : PyQT, WxPython,TkInter Python在一些公司的应用 谷歌:Google App Engine

python 面向对象

♀尐吖头ヾ 提交于 2019-12-05 19:07:17
1 面向对象 1.1 类的构造方法 __init__构造方法 调用时间:在对象被实例化时被程序自动调用 作用:用于对象创建时初始化 书写格式:init前后分别是2个下划线 程序不显示定义init方法,则程序默认调用一个无参数的init方法 对象创建过程(无参) 设置对象属性(有参) 创建对象过程(有参) 1.2 类的方法权限 修改对象属性的方法 方法1:对象变量名.属性 = 新值 问题: 可能修改的属性值不合法 在类的外部可以随意修改类的内部属性 方法2:对象变量名.内部修改属性方法 私有属性 定义:__私有变量名 只能在类内部使用,类外部不能访问,否则报错 私有方法 只能在类内部调用,在类的外部无法调用 定义私有方法在方法名前添加2个下划线:__私有方法() 类内部调用私有方法要使用self.私有方法的方式调用 #私有方法的定义&&使用 class Comrade: # 私有方法 def __send_message(self): print("消息已经向上级汇报") def answer_secret(self, secret): if secret == "芝麻开门": print("接头成功!") self.__send_message() # 调用私有方法 else: print("接头失败!") comrade = Comrade() comrade.answer