python中的类
在面向第一类的面向对象操作过程三个关键基本概念:类(class)和第一类(object,也被称作示例,instance),当中类是某一大批第一类的抽象化,能把类认知成这种基本概念;第一类才是三个具体内容存在的虚拟。从这个象征意义上看,日常生活所言的人,只不过都是人的第一类,而不是人类文明。
Python中的第一类
在Python中表述甚么是第一类,接球做范例。能操作方式三个球,比如说接球、打球、后仰等。我们把那些操作方式称作姿势。还能透过色调、总重量和大小不一来叙述三个球。那些是球的特性。在Python中,三个第一类的特点也称作特性,姿势称作方式。
假如要创建三个球的Python版或是数学模型,球是三个第一类,它要有特性和方式。
Python表述类的单纯句法如下表所示:
class Pthreads:
继续执行句子…
已经开始符号到数个类表达式…
已经开始符号到数个方式…Pthreads如果是三个不合法的URL方可,但这实际上满足用户的是 Python 的句法明确要求:假如从流程的时效性各方面来看,Python 的Pthreads要是由三个或数个有象征意义的单字鱼鳞而成的,每一单字第一个拉丁字母小写,其它拉丁字母全数小写,单字与单字间千万别采用任何人助记符。
从下面表述上看,Python 的类表述类似于表达式表述,都是以冒号(:)做为类体的已经开始,以标准化对齐的部份做为类体的。差别而已表达式表述采用 def URL,而类表述则采用 class URL。
Python 的类表述由类头(指 class URL和Pthreads部份)和标准化对齐的类体构成,在类体中最主要的三个成员是类表达式和方式。假如不为类表述任何人类表达式和方式,那么这个类就相当于三个空类,假如空类不需要其它可继续执行句子,则可采用 pass 句子做为占位符。例如,如下表所示类表述是允许的:
class Empty:pass通常来说,空类没有太大的实际象征意义。
类中各成员间的表述顺序没有任何人影响,各成员间能相互调用。
Python 类所包含的最关键的三个成员是表达式和方式,当中类表达式属于类本身,用于表述该类本身所包含的状态数据:而示例表达式则属于该类的第一类,用于表述第一类所包含的状态数据:方式则用于表述该类的第一类的行为或功能实现。
Python 是一门动态语言,因此它的类所包含的类表达式能动态增加或删除(流程在类体中为新表达式赋值是增加类表达式),流程也可在任何人地方为已有的类增加表达式;流程可透过 del 句子删除己有类的类表达式。
类似的是,Python 第一类的示例表达式也能动态增加或删除(如果对新示例表达式赋值是增加示例表达式),因此流程能在任何人地方为己有的第一类增加示例表达式;流程可透过 del 句子删除已有第一类的示例表达式。
在类中表述的方式默认是示例方式,表述示例方式的方式与表述表达式的方式基本相同,而已示例方式的第三个参数会被绑定到方式的调用者(该类的示例),因此示例方式至少应该表述三个参数,该参数通常会被命名为 self。
注意:示例方式的第三个参数并不一定要叫 self,只不过完全能叫任意参数名,而已约定俗成地把该参数命名为 self,这样具有最好的时效性。
在示例方式三个特别的方式:__init__,这个方式被称作构造方式。构造方式用于构造该类的第一类,Python 透过调用构造方式返回该类的第一类(无须采用 new)。
Python 中很多这种以双下划线开头、双下划线结尾的方式,都具有特殊的象征意义,本教程后面还会详细介绍那些特殊的方式。
构造方式是三个类创建第一类的根本途径,因此 Python 还提供了三个功能:假如开发者没有为该类表述任何人构造方式,那么 Python 会自动为该类表述三个只包含三个 self 参数的默认的构造方式。
下面流程将表述三个 Person 类:
class Person : 这是三个学习Python表述的三个Person类 # 下面表述了三个类表达式 hair = blackdef __init__(self, name = Charlie, age=8): # 下面为Person第一类增加2个示例表达式 self.name = name self.age = age # 下面表述了三个say方式def say(self, content):print(content)下面的 Person 类代码表述了三个构造方式,该构造方式而已方式名比较特殊:__init__,该方式的第三个参数同样是 self,被绑定到构造方式初始化的第一类。
与表达式类似的是,Python 也允许为类表述说明文档,该文档同样被放在类声明之后、类体之前,如下面流程中第二行的字符串所示。
在表述类之后,接下来方可采用该类了。Python 的类大致有如下表所示作用:
表述表达式;创建第一类;派生子类;