上一篇
Python创建类完全指南 - 面向对象编程核心教程 | Python学习
- Python
- 2025-07-23
- 1789
Python创建类完全指南
掌握面向对象编程核心概念,学习Python类定义、属性、方法、继承等关键知识
什么是Python类?
类是面向对象编程(OOP)的核心概念,它是创建对象的蓝图。类定义了对象的属性(数据)和方法(行为)。
在Python中,使用class关键字创建类,后面跟着类名(通常采用驼峰命名法)和冒号。
创建简单类
让我们创建一个表示汽车的简单类:
class Car:
"""一个表示汽车的类"""
# 类的属性(所有实例共享)
wheels = 4
def __init__(self, make, model, year):
"""初始化汽车的属性"""
self.make = make # 实例属性
self.model = model # 实例属性
self.year = year # 实例属性
self.mileage = 0 # 初始里程为0
def get_description(self):
"""返回汽车的描述信息"""
return f"{self.year} {self.make} {self.model}"
def drive(self, miles):
"""模拟驾驶汽车,增加里程数"""
self.mileage += miles
print(f"已行驶 {miles} 英里,总里程: {self.mileage} 英里")
代码解析:
- __init__方法:类的构造函数,在创建新实例时自动调用
- self参数:表示类的当前实例,用于访问实例属性和方法
- 实例属性:每个实例特有的属性(如make、model)
- 类属性:所有实例共享的属性(如wheels)
- 实例方法:定义在类中的函数,用于描述对象的行为
创建类的实例
定义类后,可以创建该类的实例(对象):
# 创建Car类的实例
my_car = Car("Toyota", "Camry", 2022)
# 访问属性
print(my_car.make) # 输出: Toyota
print(my_car.wheels) # 输出: 4
# 调用方法
print(my_car.get_description()) # 输出: 2022 Toyota Camry
my_car.drive(150) # 输出: 已行驶 150 英里,总里程: 150 英里
继承:创建子类
继承允许我们基于现有类创建新类,继承父类的属性和方法:
class ElectricCar(Car):
"""电动汽车,继承自Car类"""
def __init__(self, make, model, year, battery_size):
"""
初始化电动汽车的属性
先调用父类的__init__方法
"""
super().__init__(make, model, year)
self.battery_size = battery_size # 单位为kWh
self.charge_level = 100 # 初始电量百分比
def describe_battery(self):
"""描述电池信息"""
return f"这辆车配备 {self.battery_size}-kWh 电池,当前电量: {self.charge_level}%"
# 重写父类方法
def drive(self, miles):
"""
电动汽车的驾驶方法
每行驶1英里消耗1%电量(简化模型)
"""
if miles > self.charge_level:
print("电量不足,无法完成行程!")
return
self.mileage += miles
self.charge_level -= miles
print(f"已行驶 {miles} 英里,总里程: {self.mileage} 英里")
print(f"剩余电量: {self.charge_level}%")
继承要点:
- 在类名后的括号中指定父类
- 使用super()调用父类方法
- 可以添加新的属性和方法
- 可以重写父类方法以实现不同行为
使用示例:
my_tesla = ElectricCar("Tesla", "Model S", 2023, 100)
print(my_tesla.get_description())
print(my_tesla.describe_battery())
my_tesla.drive(50)
类的高级特性
类方法
使用@classmethod装饰器定义,第一个参数是类本身(通常命名为cls)
@classmethod
def change_wheel_count(cls, count):
cls.wheels = count
静态方法
使用@staticmethod装饰器定义,不需要self或cls参数
@staticmethod
def is_vintage(year):
return year < 1990
属性装饰器
使用@property将方法转换为属性
@property
def age(self):
return datetime.now().year - self.year
Python类设计最佳实践
- 使用驼峰命名法命名类(如MyClass)
- 使用小写下划线命名法命名方法和属性(如my_method)
- 每个类应该有文档字符串说明其用途
- 使用__init__方法初始化实例属性
- 遵循单一职责原则 - 每个类应该只有一个主要功能
- 优先使用组合而不是继承,除非有明显的"是一个"关系
- 使用访问控制:公共属性(无前缀)、受保护属性(_single_leading)和私有属性(__double_leading)
本文由MengHaoQi于2025-07-23发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20256323.html
发表评论