Skip to content

类把数据与功能绑定在一起。
创建新类就是创建新的对象类型,从而创建该类型的新实例 。

1. 类定义

  • 定义类使用关键字 class,后跟类名:
python
class MyClass:
    pass

类名后可加括号,没有参数时可不加

2. 实例对象

  • 类的实例化使用函数表示法:
python
x = MyClass()

变量 x 就是 MyClass 类的一个实例对象

3. 实例的初始化

  • 实例的初始化使用一个名为 __init__() 的特殊方法(固定用法)。
  • 当一个类定义了 __init__() 方法时,类的实例化操作会自动为新创建的类实例发起调用 __init__()
python
class Student():
    """学生类"""
    def __init__(self, name, age):
        self.name = name
        self.age = age


zhangsan = Student('zhangsan', 18)
lisi = Student('lisi', 19)

上面定义了两个属性:姓名name 和 年龄age
之后的学生类Student 的所有实例(比如 zhangsanlisi)均会有这两个属性

4. 实例属性(变量)

  • 实例的属性通过 self.{变量名} 来定义
  • 多个实例之间,它们的属性是不同的变量,不影响各自的值

5. 实例方法(函数)

  • 实例方法就是类中定义的函数;用于操作实例属性
  • 实例方法第一个参数为 self,代表实例本身,固定用法
python
class Student():
    """学生类"""
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_age(self):
        """获取年龄"""
        return self.age

    def set_age(self, new_age):
        """修改年龄"""
        self.age = new_age


zhangsan = Student('zhangsan', 18)
lisi = Student('lisi', 19)

print(zhangsan.age)         # 18
print(zhangsan.get_age())   # 18
zhangsan.set_age(20)
print(zhangsan.age)         # 20

6. 类的继承

比如我们在学生类Student 的基础上创建一个女学生类StudentGirl

python
class StudentGirl(Student):
    """女学生类"""
    def get_age(self):
        """获取年龄"""
        return self.age - 1

继承可以重写父类的方法,比如上面就重写了父类的获取年龄的方法。获取年龄时会减少 1 岁

7. 总结

类的使用方法很简单,难的是类的概念需要弄清楚;我总结了几点:

  • 类是一群类似的群体,比如人类、动物、学生等等
  • 子类和类的实例需要重点区分开:具体到个人,比如张三就是人类的实例;而不能说张三是人类的子类,你可以说黄种人是人类的子类
实例子类
张三黄种人
宠物阿黄
天安门东路高速公路
阿飞燕子