Python 面向对象编程
学习 class/__init__/self/继承 · 难度:进阶 · +15XP
Python 面向对象编程
Python 面向对象编程 — 从类到实例
学习前的准备
你需要 Python 3 环境。本教程面向已经理解 Python 函数和列表的初学者。面向对象编程(OOP)是一种组织代码的思维方式——它将数据和操作数据的方法打包在一起。
定义你的第一个类
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
self.speed = 0
def accelerate(self, amount):
self.speed += amount
print(f"{self.brand} {self.model} 加速到 {self.speed} km/h")
def brake(self):
self.speed = 0
print("停车了")
my_car = Car("丰田", "卡罗拉")
your_car = Car("本田", "思域")
my_car.accelerate(50) # 丰田 卡罗拉 加速到 50 km/h
your_car.accelerate(30) # 本田 思域 加速到 30 km/h
理解 self 参数
self 代表“当前这个实例本身”。当你调用 my_car.accelerate(50) 时,Python 实际调用的是 Car.accelerate(my_car, 50)。
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
def promote(self):
self.grade += 1
print(f"{self.name} 升到了 {self.grade} 年级")
s1 = Student("小明", 3)
s2 = Student("小红", 5)
s1.promote() # 小明 升到了 4 年级
继承——复用代码的利器
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} 发出声音")
class Cat(Animal):
def speak(self): # 重写父类方法
print(f"{self.name} 喵喵叫")
def purr(self): # 新增方法
print(f"{self.name} 发出咕噜声")
cat = Cat("咪咪")
cat.speak() # 咪咪 喵喵叫
小结
类是蓝图,实例是具体的对象。__init__ 是构造函数,self 代表当前实例自己。类属性所有实例共享,实例属性各自独立。继承让子类复用父类的代码,重写让子类改变父类的行为。