Пусть следующий код:Как вызвать тот же метод для списка объектов?
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,.....]
Теперь я хочу вызвать методы запуска и остановки (возможно, также другие) для каждого объекта в списке всех. Есть ли элегантный способ для этого, кроме того, чтобы писать кучу функций, как
def start_all(all):
for item in all:
item.start()
def stop_all(all):
связка функции есть две функции? – SilentGhost
Это не связано с вашим вопросом, но в вашем примере нет очевидной причины, почему вам нужен этот базовый класс. Python будет очень рад предоставить вам список несвязанных объектов, и пока все они имеют методы «начать» и «остановить», вы все равно можете перебирать их, вызывая методы. – Duncan
Ваша определяющая база с бесполезными методами, а затем определение поведения в 'A' и' B' отражает плохой дизайн в Python. Вместо использования абстрактного базового класса вы можете просто определить 'A' и' B' и использовать их взаимозаменяемо, поскольку они имеют общий интерфейс. Ваш текущий способ делать вещи создает бесполезный класс, который просто лишний материал вам не нужен. –