python - 如何将参数传递给具有不同接口的重写函数?
问题描述
情况是:一个抽象的基类定义了一组通用的动作,而将一堆专门的动作留给了子类。
from abc import ABC,abstractmethod
class Common(ABC):
def __init__(self,ord_obj):
self.ord_obj = ord_obj
self.abs_obj = self.generate_abs_obj(?)
@abstractmethod
def generate_abs_obj(self):
# Will be implemented in subclasses
pass
def common_operation(self):
return self.ord_obj + self.abs_obj
class specialize_1(Common):
def __init__(self):
super().__init__()
def generate_abs_obj(self,param_1):
# do something
return 25
class specialize_2(Common):
def __init__(self):
super().__init__()
def generate_abs_obj(self,param_1,param_2):
# do something
return param_1+param_2
如上图,abs_obj
是通过抽象方法生成并在基类中初始化的对象__init__
。它将通过普通方法在基类中使用。但是,generate_abs_obj
in 子类具有不同的接口。如何super().__init__()
使用不同的参数调用?
解决方案
您使用的整体方法似乎完全不是pythonic。我强烈建议观看 Raymond Hettinger 在本次演讲中解释 Super 和 Pythonic 继承
推荐阅读
- typescript - @emotion 样式文件的 @typescript-eslint/naming-convention 自定义配置
- python - 用户点击后如何更改选项菜单的值?
- hex - 如何使用 Linux 将 ASCII 数字 0 - 9 的文件转换为 base 8 HEX?
- python - 终止线程和/或调度程序
- python - 仅将一个字典合并到另一个具有公共字段的字典中
- python - Python中嵌套列表中的列表组合
- asp.net - 存储数据库用户名和密码的最佳方式是什么
- javascript - 如何在不触发函数的情况下将变量传递给 jQuery click/onclick 函数?
- css - 带有多个引号的 CSS 选择器
- mysql - MySQL:LeetCode 上不存在表“test.users_id”