código Supongamos la siguiente manera:¿Cómo llamar al mismo método para obtener una lista de objetos?
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,.....]
Ahora quiero llamar comienzan métodos y detener (tal vez también otros) para cada objeto en la lista de todos. ¿Hay alguna manera elegante para hacer esto, excepto de escribir un montón de funciones como
def start_all(all):
for item in all:
item.start()
def stop_all(all):
un montón de función es dos funciones? – SilentGhost
Esto no está relacionado con su pregunta, pero no hay una razón obvia en su ejemplo por la que necesita esa clase base. Python estará encantado de permitirle tener una lista de objetos no relacionados y, siempre que todos tengan métodos de "inicio" y "detención", puede iterar a través de ellos llamando a los métodos. – Duncan
Su 'Base' definitoria con métodos inútiles y luego definir el comportamiento en 'A' y 'B' refleja un diseño deficiente en Python. En lugar de utilizar una clase base abstracta, puedes simplemente definir 'A' y 'B' y usarlos indistintamente en la medida en que compartan una interfaz. Tu manera actual de hacer las cosas crea una clase inútil, que es solo algo extra que no necesitas. –