当前位置: 首页 > news >正文

用python定义类时,用子类继承父类,当父类需要从子类中传递很多形参时,该怎么处理

当父类需要从子类传递很多参数时,直接在子类中逐个传递参数会导致代码冗长、易出错且难以维护。此时可以通过 *args 和 **kwargs 简化参数传递,或结合 “参数分组”“显式声明必要参数” 等技巧,平衡灵活性和可读性。

核心解决方案:用 *args 和 **kwargs 批量传递参数

*args 用于接收可变数量的位置参数,**kwargs 用于接收可变数量的关键字参数。子类可以通过这两个变量收集父类所需的所有参数,再批量传递给父类的 __init__ 方法,避免逐个列举参数。

场景示例:父类有多个参数

假设父类 Person 需要多个参数(姓名、年龄、性别、地址、电话等),子类 Student 继承自 Person,并新增自己的参数(学号、学校)。
方法 1:**kwargs 传递所有父类参数(推荐)
子类先接收自己的专属参数,剩余参数通过 **kwargs 打包传递给父类,清晰区分 “子类自有参数” 和 “父类所需参数”。

 

class Person:def __init__(self, name, age, gender, address, phone):# 父类需要5个参数self.name = nameself.age = ageself.gender = genderself.address = addressself.phone = phoneprint(f"父类初始化:{self.name}, {self.age}岁")class Student(Person):def __init__(self, student_id, school, **kwargs):# 子类自有参数:student_id(学号)、school(学校)self.student_id = student_idself.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, 学校北京大学

  

http://www.hskmm.com/?act=detail&tid=28730

相关文章:

  • 量化(一)
  • 2025 年试验箱厂商最新推荐排行榜:涵盖高低温 / 恒温恒湿 / 冷热冲击等设备,精选研发实力强、质量管控严的优质企业
  • 2025 最新化粪池生产厂家推荐排行榜:聚焦老牌标杆与新锐力量,预制 / 玻璃钢品类权威甄选钢筋混凝土/一体/成品/拼装式化粪池厂家推荐
  • MyEMS + 边缘网关:偏远基站如何实现 “无人值守” 下的精准能耗管理?
  • 2025 云栖精选资料:《从云原生到 AI 原生核心技术与最佳实践》PPT 免费下载
  • Salesforce项目老掉坑?这8个思维陷阱千万别踩
  • 加权图异常检测技术获最具影响力论文奖
  • java基础3-判断和循环
  • 基于模拟退火的粒子群优化算法的解析
  • 总线死锁验证方法
  • 热卷
  • C#/.NET/.NET Core优秀项目和框架2025年9月简报
  • 论文对比
  • Alpha稳定分布概率密度函数的MATLAB实现
  • 关于我心目中的理想课堂构建之法的一些感受
  • 2025 年温控器厂家最新推荐排行榜:涵盖电子式、机械式、双恒温等多类型设备,结合产品性能、创新能力与市场反馈的优质品牌汇总
  • 2025 年工业与民用加热器品牌最新推荐排行榜,深度盘点机柜、柜内、紧凑、PTC 风扇型等多类型加热器优质厂商
  • 函数计算 MSE Nacos : 轻松托管你的 MCP Server
  • Metasploit Framework 6.4.92 (macOS, Linux, Windows) - 开源渗透测试框架
  • 如何查看Linux系统信息,Linux查看系统基本信息命令
  • Python 处理 Word 文档中的批注(添加、删除) - E
  • Nexpose 8.23.0 for Linux Windows - 漏洞扫描
  • 重学JS-009 --- JavaScript算法与数据结构(九)Javascript 技巧
  • Educational Codeforces Round 105 (Rated for Div. 2) 题解
  • 基于MATLAB的梯度下降法实现
  • C++练习
  • 2025 年房屋鉴定公司最新推荐权威榜单:涵盖安全评估 / 承载力 / 工程质量 / 危房 / 受损伤等领域,助您精准挑选靠谱机构
  • 当游戏NPC有了“灵魂”,网易伏羲解码游戏智能交互场景新实践
  • 2025最新微信公众号文章数据批量导出excel工具1.0版
  • 磊科N60Pro刷机