Python: 面向对象编程(OOP)
2025-02-17
面向对象编程(OOP)是一种组织程序的方法,提倡仔细设计和代码重用。本文介绍 Python 中的面向对象编程基础概念和实践。
1. 面向对象基础
1.1 对象与类
- 对象是一组数据及其操作方法的集合
- 类是对象的设计蓝图,定义了对象包含的数据和方法
- Python 中的数字、字符串、列表等都是对象
1.2 类的定义
class Person:
"""表示一个人的类"""
def __init__(self):
self.name = ''
self.age = 02. 类的方法
2.1 构造方法
class Person:
def __init__(self, name='', age=0):
self.name = name
self.age = age
def __str__(self):
return f"Person('{self.name}', {self.age})"2.2 实例方法
class Person:
def display(self):
print(f"姓名: {self.name}, 年龄: {self.age}")
def have_birthday(self):
self.age += 13. 继承
3.1 基本继承
class Player:
def __init__(self, name):
self._name = name
self._score = 0
def reset_score(self):
self._score = 0
class Human(Player):
def __repr__(self):
return f'Human({self._name})'3.2 方法重写
class Computer(Player):
def get_move(self):
return random.randint(1, 10)4. 实战案例
4.1 游戏示例
def play_undercut(p1, p2):
p1.reset_score()
p2.reset_score()
m1 = p1.get_move()
m2 = p2.get_move()
print(f"{p1.get_name()} move: {m1}")
print(f"{p2.get_name()} move: {m2}")
if m1 == m2 - 1:
p1.incr_score()
return p1, p2, f'{p1.get_name()} wins!'
elif m2 == m1 - 1:
p2.incr_score()
return p1, p2, f'{p2.get_name()} wins!'
else:
return p1, p2, 'draw: no winner'总结
Python 的面向对象编程特性:
- 简洁的类定义语法
- 灵活的继承机制
- 强大的多态支持
- 丰富的魔术方法
提示:在设计类时,建议先将属性设为私有,需要时再改为公有。