python - 如何在 Python 中使用相同的方法重构不同的类?
问题描述
在这个最小的工作示例中,A 类和 B 类做同样的事情,但它们的方法略有不同。他们将项目保存到各自的列表中并显示它们。但是,我想定义一个抽象的 Save 类,它在这里重构了很多重复的代码。有没有办法做到这一点?
class A():
def __init__(self):
self.items = []
def save(self, item):
item = "This is {}".format(item)
self.items.append(item)
def display(self):
return self.items
class B():
def __init__(self):
self.items = []
def save(self, item):
item = "This is {}...!".format(item)
self.items.append(item)
def display(self):
return self.items
a = A()
a.save('A')
a.save('B')
print(a.display())
b = B()
b.save('C')
b.save('D')
print(b.display())
输出
['This is A', 'This is B']
['This is C...!', 'This is D...!']
解决方案
class Save:
def __init__(self):
self.items = []
def save(self, item):
item = self.format_item(item)
self.items.append(item)
def display(self):
return self.items
class A(Save):
def format_item(self, item):
return 'This is {}'.format(item)
class B(Save):
def format_item(self, item):
return 'This is {}...!'.format(item)
推荐阅读
- javascript - 无法使用 jQuery 从单选表单字段中获取值
- css - 如何在 calc 函数中使用 css 变量
- html - Angular - 保留纯文本的最佳方法
- javascript - 在异步函数的 finally 块中等待导致 PromiseRejectionHandledWarning
- java - 如何生成类似 apache 的唯一 ID?
- angular - Angular PDF 查看错误 - disableCreateObjectURL
- qt - 当鼠标悬停在qt中的按钮上时更改图标
- firebase - Firebase:在帖子集合中重复用户名还是应该使用 ID?
- android - 在检查设备中可用的指纹身份验证时,获得安全异常并建议添加权限 INTERACT_ACROSS_USERS
- javascript - 包裹错误:无法解析条目。但我交叉检查了文件是否在它应该在的地方。它不工作