Класс контейнеров для общего связанного с этим классом контейнеровPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Класс контейнеров для общего связанного с этим классом контейнеров

Сообщение Anonymous »

Я пытаюсь создать контейнеры для элементов общего класса, который связан с этим классом контейнеров. Следующий код должен объяснить идею, я надеюсь: < /p>
from typing import Generic, Self, TypeVar

_TClass = TypeVar("_TClass", bound="BaseClass", covariant=True)
_TComponent = TypeVar("_TComponent", bound="BaseComponent")

class BaseClass:
components: dict[type["BaseComponent"[Self]], "BaseComponent"[Self]]

def get(self, component_type: type[_TComponent]) -> _TComponent:
"""Get a component of the specified type."""
return self.components[component_type] # type: ignore[return-value]

class BaseComponent(Generic[_TClass]):
parent: _TClass

class CommonComponent(BaseComponent[BaseClass]): pass

class AClass(BaseClass): pass
class AComponent(BaseComponent[AClass]): pass

class BClass(BaseClass): pass
class BComponent(BaseComponent[BClass]): pass

a_a1 = AClass().get(AComponent)
a_c = AClass().get(CommonComponent)
b_b = BClass().get(BComponent)
b_c = BClass().get(CommonComponent)
a_b = AClass().get(BComponent) # should throw a mypy error
b_a1 = BClass().get(AComponent) # should throw a mypy error
< /code>
Это, конечно, не работает, так как базовый компонент _tcomponent отсутствует его параметр типа. Я действительно надеюсь, что есть некоторые профессионалы на питоне, которые могут мне помочь, так как я просто не могу обернуть голову вокруг этого.


Подробнее здесь: https://stackoverflow.com/questions/796 ... iner-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Класс контейнеров для общего связанного с этим классом контейнеров
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Создание общего связанного списка, размещение следующего указателя в начале структуры
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Ошибка связи между классом SQLite и классом SQL Server в Android Java
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Ошибка связи между классом SQLite и классом SQL Server в Android Java
    Anonymous » » в форуме Android
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Ошибка связи между классом SQLite и классом SQL Server в Android Java
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»