python类

python 类方法与静态方法

空扰寡人 提交于 2020-01-20 00:06:40
@classmethod : 类方法 @staticmethod : 静态方法 类方法和静态方法的调用一样,都是通过类就可以直接调用(类名.方法名())。 区别:   类方法,需要传入该类,定义类方法的时候要传一个默认的参数cls。是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法。类方法的第一个参数cls,   静态方法则不用。第一个参数是self,表示该类的一个实例。 来源: https://www.cnblogs.com/tingxin/p/12216022.html

Python中的接口类和抽象类

与世无争的帅哥 提交于 2020-01-19 03:52:30
Python中的接口和协议 Python语言中没有interface关键词,而且除了抽象基类,每个类都有接口:类实现或继承的公开属性(方法或数据属性)。 接口类: 面向对象中的继承有两种用途: 1)可以通过继承做到代码重用,并完成扩展; 2)接口继承 所谓的接口继承就是定义一个接口类Interface,接口类中定义了一些接口(就是函数,但这些函数都是没有具体的实现),子类继承接口类,并且实现接口中的功能。 接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由类B去实现其中的某个功能或全部功能。在python中接口由抽象类和抽象方法去实现,接口是不能被实例化的,只能被别的类继承去实现相应的功能。 抽象类 抽象类只能被继承,不能被实例化。如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性。 比如我们有香蕉的类,有苹果的类,有桃子的类,从这些类抽取相同的内容就是水果这个抽象的类,你吃水果时,要么是吃一个具体的香蕉,要么是吃一个具体的桃子。。。。。。你永远无法吃到一个叫做水果的东西。 python中,抽象类和接口类没有明确的界限,若是类中所有的方法都没有实现,则认为是一个接口,若是部分方法实现,则认为是一个抽象类

关于Python中的类

微笑、不失礼 提交于 2020-01-17 00:08:47
写一下加强一下记忆 面向对象 首先,面向对象编程的概念一定是多加练习才能吃透掌握的 首先就是抽象 把要描述的东西抽象出来,在类里描述他的属性,方法 然后有了类,就可以创建实例.类就是图纸而实例就是造好的房子 Python中的对象包含了 ID 值 还有类型 当然面向对象最终要的就是暴露出来的接口,接口使使用者不用关注对象是怎么实现的,只需要接口来访问对象或者修改对象即可 当然组合,继承,多态也是很重要的概念,之前有写,这里就不赘述了 创建一个类 首先,一切皆对象,类也对象 整活 整个时间类 class Time(object): ''' this is Time class ''' def __init__(self, h, m): self.hour = h self.minute = m def __str__(self): return '[%02d:%02d]' % (self.hour, self.minute) def showTime(self): print('[%02d:%02d]' % (self.hour, self.minute)) 首先和C++不同,在类名后括号里说明了该类继承自哪个类,详细的在下面说,如果类名后直接是冒号,那么称为经典类 而三引号下面的文字是文字说明,也是注释 __init __是构造器,当成构造函数理解就好 __ str __等会在说

python学习——类中为什么要定义__init__()方法

烂漫一生 提交于 2020-01-15 19:36:05
学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧。 1、不用init()方法定义类 定义一个矩形的类,目的是求周长和面积。 class Rectangle ( ) : def getPeri ( self , a , b ) : return ( a + b ) * 2 def getArea ( self , a , b ) : return a * b rect = Rectangle ( ) print ( rect . getPeri ( 3 , 4 ) ) print ( rect . getArea ( 3 , 4 ) ) print ( rect . __dict__ ) 得到结果: 14 12 { } 从上例中可以看到,我们在类中并没有定义init()方法,但是也能够得到类似的要求,结果返回了矩形实例rect的周长及面积。 但是,我们通过print(rect.dict)来看这个实例的属性,竟然是空的,我定义了一个矩形,按理来说它的属性应该是它的长、宽。但是它竟然没有。这就是没有定义init()的原因了。 并且,在实例化对象的时候,rect = Rectangle()参数为空,没有指定a、b的值,只有在调用函数的时候才指定了。且类中定义的每个方法的参数都有a、b,这显然浪费感情,在类中直接指定方法就可以了。、 因此吧

如何理解python的类与对象

拈花ヽ惹草 提交于 2020-01-14 12:20:09
我先说说 类、对象在实际编程中有啥好处,为啥要用它们再给你解释怎么去理解它们 类的好处主要有 方便复用(如果你用函数写,就要复制整块代码,增加了代码量,增加了出错率)方便扩展(函数写段代码,若要升级、扩展,都十分复杂,容易出错,用类来扩展,则方便清晰)方便维护(因为类是把抽象的东西映射成我们常见的,摸得到的东西,容易理解,维护也方便) 举几个例子:比如你是玩具厂的工程师,你要制作一个机器,可以批量制作鸭子形状的玩具,也许你的思路如下 def makeDuckMoth(): #这里可以放其他制作细节 print('鸭子嘴巴制作完毕') def makeDuckEar(): #这里可以放其他制作细节 print('鸭耳朵制作完毕') def makeDuckEye(): #这里可以放其他制作细节 print('鸭眼睛制作完毕') def makeDuckHead(): #这里可以放其他制作细节 print('鸭头制作完毕') def makeDuckWing(): #这里可以放其他制作细节 print('鸭翅膀制作完毕') def makeDuckBody(): #这里可以放其他制作细节 print('鸭身体制作完毕') def makeDuckFoot(): #这里可以放其他制作细节 print('鸭脚制作完毕') def makeDuckMerge(): #这里可以放其他制作细节

类的成员和属性_python

五迷三道 提交于 2020-01-13 22:52:35
一、字段和方法分类 方法分类: 二、属性(将方法伪装成字段) 三种伪装方式:@property @perr.setter @perr.deleter    属性使用的场景:分页       三、公有成员和私有成员   私有成员:__字段名 __方法名,特点是外部无法访问,只能通过类里面的方法可以间接访问。   公有成员:其他字段和方法,外部和内部都可以直接访问        应用场景:数据库连接信息的保存,弄成私有,限制外部无法访问。   私有成员没有继承性,只要公有的才有继承性 四、特殊成员   __init__ :类() 时自动执行   __call__:对象() 或 类()() 时指定执行   __int__:int() 时执行   __str__:str() 时执行   __add__:两个对象进行 + 时执行这个方法 还有其他等等   主要用处:定制你想要的功能,如在执行str()时可以不是转为字符    来源: https://www.cnblogs.com/chenxiaozan/p/12186068.html

python摸爬滚打之day19----类的约束, 异常处理

♀尐吖头ヾ 提交于 2020-01-13 18:39:19
1、类的约束   父类对子类某些功能的约束.  python 中的两种约束:   1, 提取父类, 然后 在父类中定义好方法, 该方法什么都不用干, 就通过主动抛出异常 raise NotImplementedError, 所有的子类必须重写此方法, 否则访问时就会抛出异常(推荐使用). 1 class Base: 2 def login(self): 3 raise NotImplementedError("%s的这个对象的login功能没有实现" %(self.name)) 4 5 class Admin(Base): 6 def __init__(self,name): 7 self.name = name 8 def login(self): # 重写login方法,就直接运行自己类里面的login()方法. 9 print("login登录") 10 11 class Root(Base): 12 def __init__(self,name): 13 self.name = name 14 def denglu(self): # 没有重写login()方法,只能运行父类的login, 然后父类里login()抛异常 15 print("root登录") 16 17 class Normal(Base): 18 def __init__(self,name): 19

Python类属性和类方法

倾然丶 夕夏残阳落幕 提交于 2020-01-13 00:29:09
01. 类的结构 1.1 术语 —— 实例 使用面相对象开发, 第 1 步 是设计 类 使用 类名() 创建对象, 创建对象 的动作有两步: 1) 在内存中为对象 分配空间 2) 调用初始化方法 __init__ 为 对象初始化 对象创建后, 内存 中就有了一个对象的 实实在在 的存在 —— 实例 因此,通常也会把: 创建出来的 对象 叫做 类 的 实例 创建对象的 动作 叫做 实例化 对象的属性 叫做 实例属性 对象调用的方法 叫做 实例方法 在程序执行时: 对象各自拥有自己的 实例属性 调用对象方法,可以通过 self. 访问自己的属性 调用自己的方法 结论 每一个对象 都有自己 独立的内存空间 , 保存各自不同的属性 多个对象的方法 , 在内存中只有一份 ,在调用方法时, 需要把对象的引用 传递到方法内部 1.2 类是一个特殊的对象 Python 中 一切皆对象 : class AAA: 定义的类属于 类对象 obj1 = AAA() 属于 实例对象 在程序运行时, 类 同样 会被加载到内存 在 Python 中, 类 是一个特殊的对象 —— 类对象 在程序运行时, 类对象 在内存中 只有一份 ,使用 一个类 可以创建出 很多个对象实例 除了封装 实例 的 属性 和 方法 外, 类对象 还可以拥有自己的 属性 和 方法 类属性 类方法 通过 类名. 的方式可以 访问类的属性

python子类中调用父类私有方法和私有数据域

∥☆過路亽.° 提交于 2020-01-12 11:51:21
我们在python中从某父类继承子类时,可以在子类中对父类的数据域和方法操作,但是当该数据域或方法为私有时(有双下划线作为前缀),应注意调用格式如下: 子类调用父类私有数据域:self._父类名+私有数据域名 子类调用父类私有方法:self._父类名+私有方法名 代码如下: class aa : # 定义父类aa def __init__ ( self ) : self . __u = 10 # 父类私有数据域 def __m1 ( self ) : # 父类私有方法 self . __u += 1 print ( self . __u ) class bb ( aa ) : # 定义子类bb def m2 ( self ) : # 访问父类私有数据域 self . _aa__u = - 10 print ( self . _aa__u ) def m3 ( self ) : # 访问父类私有方法 self . _aa__m1 ( ) p = bb ( ) p . m3 ( ) # 打印11 p . m2 ( ) # 打印-10 来源: CSDN 作者: 功夫小象 链接: https://blog.csdn.net/qq_34907927/article/details/103943385

python 3快速入门之模块化和类

拈花ヽ惹草 提交于 2020-01-11 11:20:11
首先引用官方的一段话 Python 展现了“瑞士军刀”的哲学。 这可以通过它更大的包的高级和健壮的功能来得到最好的展现。 例如: xmlrpc.client 和 xmlrpc.server 模块让远程过程调用变得轻而易举。 尽管模块有这样的名字, 用 户无需拥有 XML 的知识或处理 XML。 ? email 包是一个管理邮件信息的库,包括 MIME 和其它基于 RFC 2822 的信息文档。 不同 于实际发送和接收信息的 smtplib 和 poplib 模块, email 包包含一 个构造或解析复杂消息 结构(包括附件)及实现互联网编码和头协议的完整工具集。 xml.dom 和 xml.sax 包为流行的信息交换格式提供了强大的支持。同样, csv 模块支持在通 用数据库格式中直接 读写。综合起来,这些模块和包大大简化了 Python 应用程序和其它 工具之间的数据交换。 国际化 由 gettext , locale 和 codecs 包支持。 这就是python的优点之一 上节讨论了基础的一些东西和入门,这里开始讲一些和其他语言类似的地方 这个时候为了比较方便,我们利用vs2012,安装插件的方法在上一篇文件中已经提到过。 一、 模块化 毕竟代码是需要保存的,而且模块化编程也是非常重要的,所以需要把文件保存在不同的地方,尤其是不同的文件夹,在这里展示一下建立的文件结构