, который является экземпляром внешнего класса.
В данном случае декоратор — член класса< /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__, чтобы сказать "
Код: Выделить всё
YЯ проверил всю документацию https:/ /docs.python.org/3/library/typing.html и не нашел решения.
Это также не помогло. Как набрать подсказку метода python Magic __get__, поскольку он не показывает, как изменить тип
Это также не помогло. Можно ли изменить аннотации типа метода для экземпляра класса, поскольку он изменяет сигнатуру функции, но не члены класса
Подробнее здесь: https://stackoverflow.com/questions/790 ... ers-in-get