Reputation: 621
In this minimum working example, Classes A and B do the same thing but their methods are slightly different. They save an item to their respective lists and display them. However, I would like to define an abstract Save class which refactors a lot of the repeated code here. Is there a way to do this?
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())
Output
['This is A', 'This is B']
['This is C...!', 'This is D...!']
Upvotes: 1
Views: 93
Reputation: 6772
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)
Upvotes: 2