9.2 基本概念
类与对象是面向对象编程的两个主要方面。一个类(Class)能够创建一种新的类型(Type),其中对象(Object)就是类的实例(Instance)。由于在Python中,对象的概念很广泛,所以在后面的描述中,使用名词:实例,代表类实例化之后的结果。
拥有相同(或者类似)数据和行为的实例都可以抽像出一个类,类就是一个模板,类定义了实例都有的数据和行为,在Python中,数据和行为统称为类的属性(Attribute)。
数据部分可以使用从属于类或者实例的普通变量来存储数据。这种从属于类或者实例的变量被称为数据属性,或者称为变量。行为部分可以使用从属于类或者实例的函数来实现,这种函数称为方法(Method)。这两个术语很重要,它有助于我们区分变量和函数。
上一节的例子,在Python中使用class关键字定义类,使用class关键字与类的名称来创建一个新类。在它之后是一个缩进的语句块,代表这个类的主体。
# 创建类使用class关键字
class Student:
pass
# 创建实例
s = Student()
print(s)
print(type(s))
定义类之后,用类名()的格式创建实例,s的类型为Student类,执行结果为
<__main__.Student object at 0x0000020D572BB208>
<class '__main__.Student'>
9.2.1 变量(数据属性)
有了实例之后,就可以给实例添加变量,并使用:
# 给实例添加变量
s.name = 'zhangsan'
print(s.name)
9.2.2 方法(动作属性)
在类的定义中,给类添加方法,类的方法至少有一个self参数:
class Student:
# 定义方法
def bao_ming(self):
print('学生报名。')
使用实例调用方法:
# 调用方法
s.bao_ming()
方法中可以使用实例的变量,前提是这个变量存在:
class Student:
def bao_ming(self):
print('学生{}报名。'.format(self.name))
self必须添加到参数列表的开头,但是不用在调用这个方法时为这个参数赋值,Python会为它提供。self参数引用的是实例本身,按照惯例,它被赋予self这一名称。
本节代码:9.1-创建类.py
# 创建类使用class关键字
class Student:
# 定义方法
def bao_ming(self):
print('学生{}报名。'.format(self.name))
# 创建实例
s = Student()
# 给实例添加变量
s.name = 'zhangsan'
print(s.name)
# print(s)
# print(type(s))
# 调用方法
s.bao_ming()