Для простоты программирования я хочу реализовать что-то вроде этого:
SpecialCaseChildClass.apply_to_all_members_of_child_class.any_method_of_parent ()
Еще более удивительной была бы реализация, в которой я могу предоставить список аргументов, который позволяет мне перебирать аргументы:
SpecialCaseChildClass.apply_to_all.any_method_of_Parent(
argument1_of_parent_method = range(number_of_children), argument2_of_parent_method = range(number_of_children))
Итак, мое предложение в словах: (Как) я могу поместить объект / метод apply_to_all_members_of_class между дочерними и родительскими методами в цепочке команд?
Я попытался реализовать эту функцию с помощью метода класса:
class SpecialCaseChildClass(Parent):
registry = []
def __init__(self, **kwargs, *args):
super().__init__(self, **kwargs, *args)
registry.append(self)
@classmethod
def apply_to_all(cls, any_function, *args, **kwargs):
[any_function(child, *args, **kwargs) for child in cls.registry]
, что позволило бы следующее:
SpecialCaseChildClass.apply_to_all_members_of_child_class(ParentClass.any_Parent_method, *args, *kwargs)
но это не так красиво, как простое дополнение к цепочке.
Возможна ли такая вещь относительно просто?
Это даже желательно?