Я реализую в Python следующее: (скелет кода ниже)
    class Base(object):
        def __init__(self, run_ext):
        def common_method1(self, run_ext):
        def common_method2(self, run_ext):
        def run_all(self):
             """Run all the methods beginning with run*"""  
    class Ext1(Base):
        def run11(self):
        def run12(self):
        def notrelated11(self):
    class Ext2(Base):
        def run21(self):
        def run22(self):
        def notrelated21(self):
Ext1.run_all()  # should run all the *'run*'* methods in Ext1 and 
Ext2.run_all()  # should run all the *'run*'* methods in Ext2.
Цель: реализация run_all() в базовом классе, который запускал бы определенный набор методов из подкласса при вызове.
Мысли: - Ванильный способ сделать это - сделать явные вызовы методов в подклассах и определить run_all в родительском классе как абстрактный метод. - Несколько хакерский способ - установка атрибута (или идентификация методов, которые должны быть запущены, по их именам).
Я ищу любые лучшие альтернативные решения.
- Также хотелось бы знать, соответствует ли эта проблема какому-либо существующему шаблону проектирования?
Примечание. Дочерние классы могут содержать другие методы, кроме методов run1, run2 и т. д., упомянутых выше методов not_related.
Обновление: как указал @mkriheli, базовый класс не должен/не должен знать о дочерних классах, унаследованных от него.
Спасибо.
 
                                                                     
                                                                    