codice Supponiamo che in questo modo:Come chiamare lo stesso metodo per un elenco di oggetti?
class Base:
def start(self):
pass
def stop(self)
pass
class A(Base):
def start(self):
... do something for A
def stop(self)
.... do something for A
class B(Base):
def start(self):
def stop(self):
a1 = A(); a2 = A()
b1 = B(); b2 = B()
all = [a1, b1, b2, a2,.....]
Ora voglio chiamare i metodi avviare e fermare (forse anche altri) per ogni oggetto in tutta la lista. C'è un modo elegante per fare questo, tranne di scrivere una serie di funzioni come
def start_all(all):
for item in all:
item.start()
def stop_all(all):
un mazzo di funzione è funzione due? – SilentGhost
Questo non è correlato alla tua domanda, ma nel tuo esempio non c'è una ragione ovvia per cui hai bisogno di quella classe base. Python sarà molto felice di farti avere una lista di oggetti non correlati e fintanto che tutti hanno metodi 'start' e 'stop' puoi ancora iterare attraverso loro chiamando i metodi. – Duncan
La definizione di 'Base' con metodi inutili e quindi la definizione del comportamento in' A' e 'B' riflette un design scadente in Python. Piuttosto che usare una classe base astratta, puoi semplicemente definire 'A' e' B' e usarli in modo intercambiabile nella misura in cui condividono un'interfaccia. Il tuo attuale modo di fare le cose crea una classe inutile, che è solo materiale extra di cui non hai bisogno. –