在 Python 中,类(Class)是 “面向对象编程(OOP)” 的核心概念。类就像是一个模板,用于创建具有特定属性(数据)和行为(方法)的对象。通过类,我们可以将相关的数据和功能组织在一起,从而提高代码的模块化、可重用性和可维护性。
Python 定义类
从上一节可以知道,如果想要创建一个对象,首先要定义一个类。在 Python 中,我们可以使用 class 这个关键字来定义一个类。
语法:
class 类名 :
属性名 = 值
def 方法名 (self):
……说明:
对于一个类来说,一般都具有 “属性” 和 “方法”。其中,属性的定义跟变量的定义相似,而方法的定义跟函数的定义相似。不过对于方法的定义,要求传入 self 作为第 1 个参数,这个是语法规定,不然就会报错。类的定义语法比较复杂,我们还是结合下面的示例多多理解一下。
示例:Python 定义一个类
# 定义一个类
class Hero:
name = '船长'
type = '力量型'
def skill(self):
print('放大招啦!')
# 实例化对象
h = Hero()
# 调用对象的属性
print(h.name)
# 调用对象的方法
h.skill()运行结果如下。
船长
放大招啦!分析:
我们都知道,使用函数需要两步:第一步是 “定义函数”,第二步是 “调用函数”。实际上,使用对象也需要两步:第一步是 “类的定义”,第二步是 “类的实例化”。
在这个示例中,我们首先使用 class 关键字定义了一个类,这个类的名字叫 Hero。不过此时只有一个 “抽象” 的类,却没有 “具体” 的对象。实际上,对象是由类来创建的。
注意: 类名的首字母一定要大写。对于类名来说,如果包含多个单词,则应该采用 “大驼峰命名法”,比如 DotaHero、UserInfo。
h=Hero() 表示使用 Hero 这个类来实例化一个对象,这个对象名叫 “h”。实例化一个对象,也就是创建一个对象,我们一定要搞清楚 “实例化对象” 指的是什么意思。此时,h 这个对象就具备 Hero 类的属性和方法。准确来说,类和对象之间是通过 “实例化” 关联起来的(这句话很重要)。
很多编程语言如 C++、Java 等,对于类的实例化,都需要用到 new 这个关键字,但在 Python 中不需要。也就是说,h= new Hero() 这种方式是错误的。
获取对象的属性,或者执行对象的方法,我们都是通过点运算符(.)来实现的,语法如下。
对象名.属性名
对象名.方法名 ()像上面这个例子,h.name 表示调用对象的 name 属性,h.skill() 表示调用对象的 skill() 方法。
“类” 和 “对象” 这两个是面向对象中最重要的概念。对于类和对象之间的关系,我们可以这样去比喻:类就像是一个模板,通过这个模板,我们可以做出各种各样的对象,如下图所示。例如,你可以通过 Hero 类生成一个英雄 A,也可以通过 Hero 类生成一个英雄 B。虽然每个英雄的姓名和类型不同,但是它们都有共同的特征,那就是都拥有 “姓名” 和 “类型” 这两个属性。

Python 类的 3 种创建方式
可能有小伙伴会问:“Python 在创建一个类时,类名后面加上 ‘ () ’ 和没加上 ‘ () ’ ,两者有什么区别呢?” 其实这两个是没有区别的。对于创建一个类,下面 3 种方式是等价的。
# 方式 1
class A:
……
# 方式 2
class A():
……
# 方式 3
class A(object):
……