python面向对象——类的参数
之前一直困惑于python类在继承中冗长的参数,经过研究airflow的代码,发现是可以进行优化的.
Father类有两个必选参数src,dst,和一个默认参数concurrency,
子类有两个必选参数target_db, target_tb,在子类的初始化方法__init__中只需要有target_db, target_tb的签名,其他参数都可以用*args, **kwargs替代
在实际的子类实例化的时候,则需要将子类/父类所有必须参数都初始化,但毕竟子类的初始化方法简化了很多
class Father(object): def __init__(self, src, dst, concurrency=1, *args, **kwargs): self.src = src self.dst = dst self.concurrency = concurrency self.json_dict = None def print_obj(self): print(self.__dict__) class Son(Father): def __init__(self, target_db, target_tb, *args, **kwargs): super().__init__(*args, **kwargs) self.target_db = target_db self.target_tb = target_tb if __name__ == '__main__': t = Son(src='src', dst='dst', target_db='odoo', target_tb='product') t.print_obj()
如果类参数较多,从一个字典来初始化的时候,可以进行简化:
if __name__ == '__main__': print(sys.argv[1]) args = transform_params(sys.argv[1]) s=Son(**args)
需要保证字典中包含类的所有必选参数且字典参数key与类参数相同!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗