您的“关注”和“点赞”,是信任,是认可,是支持,是动力…
如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。
文章目录
1 Python 类的定义
在 Python 中定义类需要实用class
关键字,格式如下所示:
class 类名:
类属性...
类方法...
对以上格式说明,
class
:此关键字是必需的。- 类名:类名本质上就是一个标识符,因此,在给类起名字时,必须让其符合 Python 标识符命名规则。还要考虑可读性问题,类名最好能体现出该类的功能。如果类名由多个字母或单词组成,每个单词的首字母大写,其它字母小写。
:
:类名后的冒号是必需的。告诉 Python 解释器,要开始编写类属性和类方法了。- 类属性和类方法:都不是必需的,可有可无。请参见《Python 类中的变量(或属性)分类以及特点详解》。
- Python 类中的属性和方法所在的位置是任意的,它们之间并没有固定的前后次序。
- 同属一个类的所有类属性和类方法,要保持统一的缩进格式。
举例如下所示:
例一,
# 定义类
class Person:
# 定义类属性
name = '码农阿杰'
age = 18
# 定义类方法
def say(self):
print('Person 类中的 say() 方法。')
例二,
# 定义空类,没有实际意义
class Demo:
pass
例一中定义了一个 Person
类,类中有一个实例方法 say(self)
,其中还有个self
参数。
对于实例方法,请参见博文《Python 类中的方法分类以及特点详解》。
对于 self
参数,请参见博文《Python self 参数详解》。
2 Python 创建类的对象和使用
2.1 Python 类对象的创建
创建类对象的过程,又称为类的实例化。
类的实例化,其语法格式如下所示:
类名(参数)
举例如下所示:
# 定义类
class Person:
# 定义类属性
name = '码农阿杰'
age = 18
# 定义实例方法
def say(self):
print('Person 类中的 say() 方法。')
person = Person() # 类的实例化:创建类的对象
2.2 Python 类对象的使用
(1)类对象访问变量或方法
类对象访问类中实例变量的语法格式如下所示:
类对象名.变量名
类对象调用类中方法的语法格式如下所示:
对象名.方法名(参数)
举例如下所示:
# 定义类
class Person:
# 定义类属性
name = '码农阿杰'
age = 18
# 定义实例方法
def say(self):
print('Person 类中的 say() 方法。')
person = Person() # 类的实例化:创建类的对象
# 输出 name、age 实例变量的值到控制台
print(person.name)
print(person.age)
# 修改实例变量的值
person.name = '阿杰'
person.age = 28
print('修改后实例变量的值:', person.name, person.age)
# 调用实例方法
person.say()
运行结果:
码农阿杰
18
修改后实例变量的值: 阿杰 28
Person 类中的 say() 方法。
(2)给类对象动态添加、删除变量
举例如下所示:
# 定义类
class Person:
# 定义类属性
name = '码农阿杰'
age = 18
# 定义实例方法
def say(self):
print('Person 类中的 say() 方法。')
person = Person() # 类的实例化:创建类的对象
# 为类对象动态添加两个实例变量 gender、num
person.gender = '男'
person.num = 1314
# 打印为类对象动态添加的两个实例变量 gender、num 的值
print(person.gender)
print(person.num)
# 使用 del 语句动态删除类对象的实例变量
del person.gender
# 打印进行测试,是否删除成功。如果删除成功,会报错。
print(person.gender)
运行结果:
男
1314
Traceback (most recent call last):
File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 26, in <module>
print(person.gender)
AttributeError: 'Person' object has no attribute 'gender'
(3)给类对象动态添加方法
注意:为对象动态增加的方法,Python 不会自动将调用者自动绑定到所添加方法的第一个参数(通常为 self
),需要手动绑定。
对于 self
参数,请参见博文《Python self 参数详解》。
举例如下所示:
例一,
# 定义类
class Person:
# 定义类属性
name = '码农阿杰'
age = 18
# 定义实例方法
def say(self):
print('Person 类中的 say() 方法。')
person = Person() # 类的实例化:创建类的对象
# 先准备一个方法
def add(self):
print('add() 函数。')
# 为 person 对象动态添加 info 方法。把事先准备好的 add(self) 方法赋值给 info。
person.info = add # 动态绑定方法。也可以使用 lambda 表达式来写,因为事先准备的 add(self) 方法只有一行代码
person.info(person) # 手动将调用者绑定到所添加方法的第一个参数
运行结果:
add() 函数。
例二,还可以借助 types 模块下的 MethodType 来实现
# 定义类
class Person:
# 定义类属性
name = '码农阿杰'
age = 18
# 定义实例方法
def say(self):
print('Person 类中的 say() 方法。')
person = Person() # 类的实例化:创建类的对象
# 先准备一个方法
def add(self):
print('add() 函数。')
# 为 person 对象动态添加 info 方法。把事先准备好的 add(self) 方法赋值给 info。
# person.info = add # 动态绑定方法
# person.info(person) # 手动将调用者绑定到所添加方法的第一个参数
# 使用 types 模块下的 MethodType 实现动态绑定方法和手动将调用者绑定到所添加方法的第一个参数
from types import MethodType
person.info = MethodType(add, person) # 已经将该函数的 self 参数绑定为 person
person.info() # 调用添加的方法
运行结果:
add() 函数。