Никаких подсказок Pylance после украшения класса (Python)Python

Программы на Python
Anonymous
Никаких подсказок Pylance после украшения класса (Python)

Сообщение Anonymous »

У меня вопрос по поводу подсказок Пиланса после украшения класса. У меня есть бесполезный минимальный пример:

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

class PrimaryModel():

def print(self):
print("I am invisible O.o")

def mydeco(cls: PrimaryModel):
return cls

if __name__ == "__main__":

@mydeco
class User(PrimaryModel):
pass

alan = User()
alan.print()    # no hints
Проблема в том, что метод alan.print неизвестен в IDE (VS Code). (Код работает нормально)
Теперь я могу исправить это явным объявлением типа. Здесь это хорошо намекает:

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

class PrimaryModel():

def print(self):
print("I am invisible O.o")

def mydeco(cls: PrimaryModel):
return cls

if __name__ == "__main__":

@mydeco
class User(PrimaryModel):
pass

alan: PrimaryModel = User()
alan.print()    # hints ok
Но затем, если я подклассифицирую пользователя, опять же, никаких подсказок (раскомментирование декоратора включает подсказки):

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

class PrimaryModel():

def print(self):
print("I am invisible O.o")

def mydeco(cls: PrimaryModel):
return cls

if __name__ == "__main__":

@mydeco
class User(PrimaryModel):
pass

class Player(User):
pass

alan: PrimaryModel = Player()
alan.print()    # no hints :'(
В чем проблема? Не слишком ли сложно Пайлансу решить этот тип? Почему это не намекает, даже если я явно объявляю тип? Можно ли это как-то решить?
Я пробовал явное объявление типа, проверяя тип времени выполнения. Просто не удалось заставить это работать.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ass-python

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