gd1xza
@gd1xza

Сделать так чтобы класс в python был всегда своим обьектом?

Есть такой интересный модуль как typing
Там используется магия и предоставляется много чудных конструкций

import typing
type(typing.Union) # <class 'typing._SpecialForm'>

при этом можно сделать так
typing.Union[object, object]
мы не создаем обьект Union но при этом он использует метод __getitem__
а обьект создается уже как-то позже

class Magic:

    id: int

    def __init__(self, id: int):

        self.id = id

    @staticmethod
    def __getitem__(item: int):
        print(item)
        return Magic(item)

Magic[1]

как мне сделать так что-бы этот класс заработал как Union в typing?
  • Вопрос задан
  • 61 просмотр
Решения вопроса 2
gd1xza
@gd1xza Автор вопроса
у меня получилось так
class BackgroundOfMagic:

    id: int

    def __init__(self):
        return

    @staticmethod
    def create(id: int):
        m = BackgroundOfMagic()
        m.id = id
        return m
    
    def __getitem__(self, item: int):
        return Magic.create(item)
    
    def __repr__(self):
        return f'{self.id}'
    

Magic = BackgroundOfMagic()
print(Magic[1])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы