Каков правильный тип подсказки для фабрики классов с множественным наследованием? - PullRequest
3 голосов
/ 05 июня 2019

Какой правильный тип возврата для следующей функции?

import typing

T = typing.TypeVar['T']
U = typing.TypeVar['U']


def class_factory(class_T: typing.Type[T], class_U: typing.Type[U]) -> ???:
    return type(class_T.__name__ + '_x_' + class_U.__name__,
                (class_T, class_U), {})

Справочная информация: я пытаюсь преобразовать обычный класс Python T в класс Subject (субъект, как в шаблоне наблюдателя). Моя идея - создать класс SubjectT, наследующий как T, так и Subject:

import typing
T = typing.TypeVar('T')

def create_subject(class_T: typing.Type[T]) -> ???:
    class result_class(Subject, class_T):
        def __setattr__(self, name, value):
            super().__setattr__(name, value)
            self.notify()   # notify observers of all changes
    return result_class  

Это работает, но моя IDE не предлагает автозаполнения кода для result_class.

...