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()