Есть ли способ для статических анализаторов (например, VS Code Intellisense) распознавать классы, созданные с помощью фаPython

Программы на Python
Anonymous
Есть ли способ для статических анализаторов (например, VS Code Intellisense) распознавать классы, созданные с помощью фа

Сообщение Anonymous »

У меня есть следующий код.

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

from abc import ABC, abstractmethod
from typing import *

class ExampleClass(ABC):
@abstractmethod
def get(self):
pass

def class_factory(s: str) -> Type[ExampleClass]:
class SpecificClass(ExampleClass):
def __init__(self):
pass

def get(self):
return s

return SpecificClass

ASubclass = class_factory("A")
BSubclass = class_factory("B")

def f(x: ASubclass):
pass
В VS Code, в f, аннотация типа ASubclass имеет красную подчеркнутую надпись

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

Variable not allowed in type expression Pylance(reportGeneralTypeIssues)
Когда я навожу курсор на определение ASubclass, VS Code может распознать, что это Type[ExampleClass], поэтому я ожидаю, по крайней мере, при кодировании f , набрав что-то вроде x., вы получите .get() в качестве предложения, но когда я навожу курсор на x, VS Code сообщает мне x: Unknown .
Я хочу, чтобы VS Code (или любой статический анализатор) вел себя с этим кодом без необходимости выписывать десятки или сотни потенциально похожих классов.

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

from abc import ABC, abstractmethod
from typing import *

class ExampleClass(ABC):
@abstractmethod
def get(self):
pass

class ASubclass(ExampleClass):
def get(self):
return "A"

class BSubclass(ExampleClass):
def get(self):
return "B"

def f(x: ASubclass):
pass
Как этого можно достичь?

Подробнее здесь: https://stackoverflow.com/questions/778 ... ognize-cla

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