W tym minimalnym przykładzie pracy klapy A i B robią to samo, ale ich metody są nieco inne. Zapisz element do ich odpowiednich list i wyświetlają je. Chciałbym jednak zdefiniować abstrakcyjną klasę oszczędzania, która refaktuje wiele powtarzanego kodu tutaj. Czy istnieje sposób na to?

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())

Wynik

['This is A', 'This is B']
['This is C...!', 'This is D...!']
1
bwrr 28 październik 2020, 03:53

1 odpowiedź

Najlepsza odpowiedź
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)
2
Daniel Walker 28 październik 2020, 01:03