用python定义类时,用子类继承父类,当父类需要从子类中传递很多形参时,该怎么处理
当父类需要从子类传递很多参数时,直接在子类中逐个传递参数会导致代码冗长、易出错且难以维护。此时可以通过 *args 和 **kwargs 简化参数传递,或结合 “参数分组”“显式声明必要参数” 等技巧,平衡灵活性和可读性。
核心解决方案:用 *args 和 **kwargs 批量传递参数
场景示例:父类有多个参数
方法 1:**kwargs 传递所有父类参数(推荐)
class Person:
def __init__(self, name, age, gender, address, phone):
# 父类需要5个参数
self.name = name
self.age = age
self.gender = gender
self.address = address
self.phone = phone
print(f"父类初始化:{self.name}, {self.age}岁")
class Student(Person):
def __init__(self, student_id, school, **kwargs):
# 子类自有参数:student_id(学号)、school(学校)
self.student_id = student_id
self.school = school
# 用**kwargs将剩余参数传递给父类
super().__init__(** kwargs) # 父类需要的name/age等参数从kwargs中获取
print(f"子类初始化:学号{self.student_id}, 学校{self.school}")
# 实例化子类时,传递子类参数 + 父类所有参数
student = Student(
student_id="2023001",
school="北京大学",
# 以下是父类需要的参数(通过关键字参数传入,会被**kwargs收集)
name="张三",
age=20,
gender="男",
address="北京市海淀区",
phone="13800138000"
)
# 输出:
# 父类初始化:张三, 20岁
# 子类初始化:学号2023001, 学校北京大学

浙公网安备 33010602011771号