快速解决
直接使用 class Person: 定义类,通过 __init__ 方法初始化 name 和 age 属性即可完成基础类创建,示例代码如下:
class Person:
def __init__(self, name, age):
self.name = name # 初始化姓名属性
self.age = age # 初始化年龄属性
p = Person("Alice", 30)
常用方法
| 方法名 | 用法说明 | 使用频率 | 示例代码片段 |
|---|---|---|---|
__init__ |
初始化类属性 | ★★★★★ | self.name = name |
__str__ |
定义字符串表示 | ★★★★☆ | return f"{self.name}" |
@property |
封装属性访问 | ★★★★☆ | @property装饰器 |
validate_age |
添加年龄验证逻辑 | ★★★★☆ | if age < 0: raise... |
set_age |
修改年龄属性 | ★★★☆☆ | self._age = age |
del Person |
删除类定义 | ★★☆☆☆ | del Person |
详细说明
初始化方法
class Person:
def __init__(self, name, age):
self.name = name # 将传入的name参数赋值给实例属性name
self.age = age # 将传入的age参数赋值给实例属性age
person1 = Person("张三", 25)
print(person1.name) # 输出实例的name属性
print(person1.age) # 输出实例的age属性
字符串表示
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}, {self.age}岁" # 自定义打印格式
p = Person("李四", 30)
print(p) # 输出:李四, 30岁
年龄验证
class Person:
def __init__(self, name, age):
self.name = name
if age < 0:
raise ValueError("年龄不能为负数") # 基本验证逻辑
self.age = age
try:
p = Person("王五", -5)
except ValueError as e:
print(e) # 输出:年龄不能为负数
高级技巧
属性修改封装
class Person:
def __init__(self, name, age):
self.name = name
self._age = age # 使用下划线表示受保护属性
@property
def age(self):
return self._age # 通过property装饰器访问
@age.setter
def age(self, value):
if value < 0:
raise ValueError("无效年龄") # 添加验证逻辑
self._age = value
p = Person("赵六", 20)
p.age = 25 # 通过setter修改年龄
print(p.age) # 输出25
类继承扩展
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age) # 调用父类初始化方法
self.student_id = student_id # 添加子类专属属性
s = Student("小明", 18, "S12345")
print(s.name, s.age, s.student_id) # 输出继承的属性和新增属性
使用slots优化
class Person:
__slots__ = ['name', 'age'] # 限制实例只能包含这两个属性
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("测试", 100)
实战应用
员工信息管理系统
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name} ({self.age})"
class Employee(Person):
def __init__(self, name, age, salary):
super().__init__(name, age)
self.salary = salary # 添加薪资属性
def get_annual_income(self):
return self.salary * 12 # 计算年薪
emp = Employee("李雷", 35, 10000)
print(f"员工{emp} 年薪:{emp.get_annual_income()}") # 输出完整信息
用户注册验证
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@property
def is_adult(self):
return self.age >= 18 # 验证是否成年
try:
user = Person("小红", 16)
if not user.is_adult:
print("未满18岁,注册受限")
except Exception as e:
print(e)
常见问题
Q1:如何处理用户输入负数年龄的情况?
A1:在 __init__ 方法中添加 if age < 0: raise ValueError() 验证逻辑,Python 会抛出异常提示。
Q2:如何访问 Person 类的 name 属性?
A2:通过实例直接访问 person.name,或使用 getattr(person, 'name') 方法获取。
Q3:需要扩展 Person 类功能怎么办?
A3:建议使用继承方式创建子类(如Student、Employee),通过 super().__init__() 保留原有功能。
Q4:能否添加其他属性?
A4:可以,在 __init__ 方法中增加参数即可,如 self.gender = gender,但要避免污染类结构。
总结
Python 创建一个 Person 类包含 name 和 age 属性,核心在于正确使用 __init__ 初始化方法,通过属性封装和继承扩展可以构建灵活的面向对象结构。