摘要:第7.23节 Python使用property函数定义属性简化属性访问的代码实现一、 背景 在本章前面章节中,我们介绍了类相关的知识,并举例进行了说明,在这些例子中会定义一些形如 “get属性”、“set属性”的实例属性的存取方法,当实例数据的属性是私有时,这...
阅读全文
摘要:第7.22节 Python中使用super调用父类的方法前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的。由于super方法的特殊性,本节单独谈一谈super方法。一、super简介1. super方法返回一个“super”类型的对象,注...
阅读全文
摘要:上两节介绍了Python抽象类的真实子类的定义和使用,本节介绍另一种抽象类的实现方法:虚拟子类方法。一、 相关概念虚拟子类是将其他的不是从抽象基类派生的类”注册“到抽象基类,让Python解释器将该类作为抽象基类的子类使用,因此称为虚拟子类,这样第三方类不需要直接继承自...
阅读全文
摘要:第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍。一、 案例说明本节定义了图形的抽象基类Shape,要求提供求面积和周长的抽象方法,然后派生两个子类长方...
阅读全文
摘要:第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类一、 引言前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不是以继承关系为标准,在各种调用中,不会显式地指定对象必须包含哪些方法才能用作参数...
阅读全文
摘要:第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容。一、 案例说明本节定义了类StaticMethod,在类中定义了静态方法stmethod、类方法clsmethod...
阅读全文
摘要:第7.17节 Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析静态方法也是通过类定义的一种方法,一般将不需要访问类属性但是类需要具有的一些能力可以静态方法提供。一、 静态方法定义1. 语法@ staticmethod def 方法...
阅读全文
摘要:第7.16节 案例详解:Python中classmethod定义的类方法上节介绍了类方法定义的语法以及各种使用的场景,本节结合上节的知识具体举例说明相关内容。一、 案例说明本节定义的一个类ClsMethod,在类内定义了类方法clsmeth1、getobjcnt,演示...
阅读全文
摘要:第7.15节 Python中classmethod定义的类方法详解类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法。本节介绍类方法的定义和使用。一、 类方法的定义在类中定义的方法,默认是实例方法,要定义类方法,需要用到单独的语法。1. 语法:@c...
阅读全文
摘要:第7.14节 Python类中的实例方法详析一、 实例方法的定义在本章前面章节已经介绍了类的实例方法,实例方法的定义有三种方式:1. 类体中定义实例方法第一种方式很简单,就是在类体中定义,所有在类中定义的方法默认是实例方法。定义实例方法与定义函数基本相同,只是Py...
阅读全文
摘要:第7.13节 案例详解:Python类变量上节介绍了类变量的定义和使用方法,并举例进行了说明。本节将通过一个更完整的例子来说明。一、 定义函数dirpdef dirp(iter): return [i for i in dir(iter) if not i.starts...
阅读全文
摘要:第7.12节 可共享的Python类变量一、 引言在上节已经引入介绍了类变量和实例变量,类体中定义的变量为类变量,默认属于类本身,实例变量是实例方法中定义的self对象的变量,对于每个实例都是独有数据,而类变量是该类所有实例共享的属性和方法。二、 类变量的定义方式...
阅读全文
摘要:上节老猿介绍了实例变量的访问方法,本节结合一个具体案例详细介绍实例变量访问。本节定义一个Vehicle类(车),它有三个实例变量self.wheelcount(轮子数)、self.power(动力)、self.totaldistance(累计行驶里程),但在构造方法内只定义了...
阅读全文
摘要:一、 引言在前面章节已经引入介绍了类变量和实例变量,类体中定义的变量为类变量,默认属于类本身,实例变量是实例方法中定义的self对象的变量,对于每个实例都是独有数据,而类变量是该类所有实例共享的属性和方法。二、 实例变量的定义方式1. Python变量的本质...
阅读全文
摘要:上节介绍了Python中类的封装机制,本节结合一个具体例子进行详细说明。我们定义一个Person类,其内部有姓名、年龄和类型三个实例变量,并定义了相关的存取方法:class Person(): def __type(self): if self._age<...
阅读全文
摘要:前面章节已经介绍了Python中的多态和继承,本节将介绍面向对象程序设计OOP三大特征的另一个特征--封装。一、 概念封装是将对象的状态信息(也就是数据、属性)隐藏在对象内部,将对象的属性和实现细节隐藏起来,不允许外部程序直接访问对象内部信息,而是通过类所提供的方法来实...
阅读全文
摘要:本节实现一个类继承的小程序,下面一边结合代码一边介绍相关继承的知识。例子以车、汽车为例,车为父类、汽车为子类。一、 定义父类Vehicleclass Vehicle(): def __init__(self,wheelcount, power):#构造方法,参数有轮...
阅读全文
摘要:在本章第一节,介绍了面向对象程序设计的三个特征:封装、继承和多态,前面章节重点介绍了封装和多态,由于Python语言是多态语言,对象的类型不再由继承等方式决定,而由实际运行时所表现出的具体行为来决定,因此不存在出于多态考虑来进行继承。但继承可以让子类获得超类(...
阅读全文
摘要:在上节已经引入介绍了类定义,并简单介绍了类变量、实例变量、类方法和实例方法,后面章节还会进一步详细介绍相关的内容。本节要介绍的self是与类变量、实例变量、类方法和实例方法具体定义实现强相关的。一、什么是self?在Python中self实际上是指向类声明的实例对象自身,如果...
阅读全文
摘要:一、 引言在较旧的Python版本中,类型和类之间泾渭分明:内置对象是基于类型的,而自定义对象是基于类的。因此,你可以创建类,但不能创建类型。在较新的Python 2版本中,这种差别不那么明显。在Python 3中,已不再区分类和类型了,类就是类型,类型就是类,如int...
阅读全文