Python аннотирует добавление членов класса в __get__Python

Программы на Python
Anonymous
Python аннотирует добавление членов класса в __get__

Сообщение Anonymous »

Я хочу создать декоратор, который добавляет элемент в декорируемый класс

, который является экземпляром внешнего класса.
В данном случае декоратор — член класса< /code> добавляет атрибут self к экземпляру класса y типа X

Код: Выделить всё

class memberclass[Y]:
def __init__(self, cls: type[Y]):
self.cls = cls

def __get__(self, x, cls) -> Y | type[Y]:
if x is None: return self.cls
# I deleted some lines related to memorizing y per instance of X
y = self.cls()
y.self = x
return y

class X:
z: int
@memberclass
class y:
def f(self):
# self.self is instace of X
# type checker should be aware of self.self.z

# X.y is class y
# X().y is instance of that class
# X().y.self is X()
Я думаю, что может быть какой-то способ

прокомментировать метод __get__, чтобы сказать " получает нового члена с типом typeof x".

Я проверил всю документацию https:/ /docs.python.org/3/library/typing.html и не нашел решения.

Это также не помогло. Как набрать подсказку метода python Magic __get__, поскольку он не показывает, как изменить тип

Это также не помогло. Можно ли изменить аннотации типа метода для экземпляра класса, поскольку он изменяет сигнатуру функции, но не члены класса

Подробнее здесь: https://stackoverflow.com/questions/790 ... ers-in-get

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