Python编程:从入门到实践(第3版)

> 📖 **一起读书吧!** 加入《Python编程:从入门到实践》共读营 👉 [点击参加](https://mp.weixin.qq.com/s/ehe2vMrfAFscRLqbM9TF-g)

本讲内容

  • 创建和使用类
  • __init__ 初始化方法
  • 实例属性和类属性
  • 实例方法
  • 修改属性:直接改、通过方法改

学习目标

理解面向对象编程的"设计图纸" 📐


1. 创建第一个类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Dog:
"""一个简单的狗类"""

def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age

def sit(self):
"""模拟狗被命令坐下"""
print(f"{self.name} is now sitting.")

def roll_over(self):
"""模拟狗打滚"""
print(f"{self.name} rolled over!")

__init__ 是构造方法,创建实例时自动调用self 代表实例本身。

官方文档:9. Classes

2. 创建实例

1
2
3
4
5
6
7
my_dog = Dog('旺财', 3)
your_dog = Dog('来福', 5)

print(f"我的狗叫 {my_dog.name}")
print(f"它 {my_dog.age} 岁了")
my_dog.sit()
my_dog.roll_over()

3. __init__ 详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer = 0 # 设置默认值

def get_description(self):
return f"{self.year} {self.make} {self.model}"

def read_odometer(self):
print(f"里程:{self.odometer} 英里")

my_new_car = Car('audi', 'a4', 2024)
print(my_new_car.get_description())
my_new_car.read_odometer()

4. 修改属性

直接修改

1
my_new_car.odometer = 23

通过方法修改(推荐,可加验证)

1
2
3
4
5
6
7
8
def update_odometer(self, mileage):
if mileage >= self.odometer:
self.odometer = mileage
else:
print("不能把里程往回调!")

def increment_odometer(self, miles):
self.odometer += miles

5. 类属性 vs 实例属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Car:
wheels = 4 # 类属性 — 所有实例共享

def __init__(self, make, model):
self.make = make # 实例属性 — 每个实例独有
self.model = model

c1 = Car('丰田', '卡罗拉')
c2 = Car('本田', '思域')

print(Car.wheels) # 4(通过类访问)
print(c1.wheels) # 4(通过实例也能访问)
print(c2.wheels) # 4

Car.wheels = 3 # 改变类属性 → 所有实例都变
print(c1.wheels) # 3

6. __str__ 方法

1
2
3
4
5
6
7
8
9
10
11
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year

def __str__(self):
return f"{self.year} {self.make} {self.model}"

my_car = Car('比亚迪', '汉', 2024)
print(my_car) # 2024 比亚迪 汉(调用 __str__)

官方文档:object.__str__


📚 官方文档参考


🎓 AI 编程实战课程

程序员晚枫专注AI编程培训,通过 《30讲 · AI编程训练营》,让小白也能用AI做出实际项目。