类的定义和使用
类是对某一类事物的抽象描述,如动物类、玩具类等。它是一个抽象的概念。类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实的个体,他是类的实例。所以对象时根据类创建的,并且一个类可以用于多个对象。
类是由类名、属性和方法三部分组成:
- 类名:类的名称,习惯上,他的首写字母是大写,不能用阿拉伯数字开头
- 属性:用于描述事务的特征
- 方法:用于描述事物的行为
在Python中,可以使用class关键字声明一个类,其基本语法格式如下:
class 类名:
类的属性
类的方法
程序要想完成具体的功能,仅有类是不够的,还需要根据类创建实例对象.将类实例化为一个对象语法如下:
对象名 = 类名([相关参数])
给对象添加属性格式如下:
对象名.新的属性名 = 值
数据成员与成员方法
私有成员与共有成员
从形式上看,在定义类的成员时,如果成员名以两个下划线(__开头)则表示是私有成员,但是Python并没有对私有成员提供严格的访问保护机制.私有成员在类的外部不能直接访问.Python提供了一种特殊方式‘对象名._类名__xxx
’可以访问私有成员,但这会破坏类的封装,不推荐使用.
在Python中,以下划线开头和结束的成员名含有特殊含义,类定义中用下划线作为变量名和方法名前缀和后缀来表示类的特殊成员.
- _xxx:保护成员,不能用‘from moudel import *’,自由类对象和子类对象可以访问这些成员。
__xxx__
: 系统定义的特殊成员__xxx
:类中的私有成员,一般只有类对象自己能访问,子类对象也不能访问到这个成员,但是在对象外部可以通过‘对象名._类名__xxx
’这样的特殊方式访问- python不存在严格意义上的私有成员
数据成员
数据成员用来说明对象特有的一些属性,数据成员大体分为两类:属于对象的数据成员和属于类的数据成员.属于对象的数据成员主要指在构造函数__init__()
中定义的,定义和使用必须以self为前缀,同一个类的不同对象之间的数据成员互不影响;属于类的数据成员时该类所有对象共享的,不属于任何一个对象,在定义类时这类数据成员不在任何一个成员方法的定义中
方法
公有方法和私有方法
在类中定义的方法可以分为四类:公有方法、私有方法、静态方法和类方法
公有方法和私有方法一般是指属于对象的实例方法,其中私有方法的名称以两个下划线(__)开始,每个对象都有自己的私有方法和公有方法,这两类方法都可以访问属于类和对象的成员;公有方法通过对象名直接调用,私有方法不能通过对象名字直接调用,只能在实例方法中通过self调用或者在外部通过Python支持的特殊方式调用.
类的所有实例方法都至少有一个名为self的参数,并且是方法的第一形参,self代表对象自身.
静态方法和类方法都可以通过类名和对象名调用,但不能直接访问属于对象的成员,智能访问属于类的成员。一般将cls作为类方法的第一个参数,表示该类自身,在调用类方法时不需要为该参数传递值
静态方法
Python中允许声明与类的对象实例无关的方法,称为静态方法。静态方法不对特定实例进行操作,在静态方法中访问对象实例会导致错误。静态方法中访问对象会导致错误。静态方法通过装饰器@staticmethod
进行定义,其格式如下:
@staticmethod
def 静态方法(