Python 从设计之初就是一门面向对象的语言,Python 中的一切数据都是对象。

Python 中涉及面向对象的术语主要有:

类:用来描述具有相同的属性和方法的对象的集合,定义了该集合中每个对象所共有的属性和方法。类是生成对象的“模板”;

对象:通过类定义的数据结构实例。对象由类变量、实例变量和方法构成;

数据成员:类变量或者实例变量,用于处理类及其实例对象的相关的数据,又称属性;

类变量:同一个类的所有对象均可访问的变量,类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用;

实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的;

方法:类中定义的函数;

实例化:创建一个类的实例,即生成类的一个具体对象;

继承:即一个派生类(Derived Class,也称子类)继承基类(Base Class,也称父类)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待;

方法重写:在子类中定义与父类同名的方法,这个过程称为方法的重写(Overwrite),又称方法的覆盖(Override)。

Python 中定义一个类的语法如下:

class 类名:
<数据成员声明 1>
...
<数据成员声明 N>

定义类后可以将其实例化得到一个对象,并通过操作对象完成目标任务,例如:

class Class1:
i = 123
def func1(self):
return 'Hello there!'
x = Class1()

print("Class1 类的属性 i 为:", x.i)

print("Class1 类的方法 func1() 输出为:", x.func1())

上述代码的运行结果如下所示:

>>> class Class1:
... i = 123
... def func1(self):
... return 'Hello there!'
>>> x = Class1()
>>> print("Class1 类的属性 i 为:", x.i)
Class1 类的属性 i 为: 123

>>> print("Class1 类的方法 func1() 输出为:", x.func1())

Class1 类的方法 func1() 输出为: Hello there!

类内部的变量分为类变量和实例变量两种,类变量的定义和普通变量一样,调用时使用的方式直接访问,类的实例也能访问类变量。实例变量则是以 self. 开头,仅供各个实例对象使用。

类名.变量名

类内部的方法分为三种:

实例方法:是指该类的每个实例都可以调用到的方法,只有实例能调用实例方法。与普通函数不同的是,实例方法有一个额外的第一个参数,其名称按惯例是 self。

类方法:是将类本身作为对象进行操作的方法,类本身和实例都可以调用类方法。定义时使用 @classmethod 进行装饰,其第一个参数是类,名称按惯例是 cls。实例方法和类方法都是依赖于 Python 的修饰器实现的。

静态方法:是一种存在于类中的普通函数,不会对任何实例类型进行操作,类本身和实例都可以调用静态方法,定义时以 @staticmethod 进行装饰声明。