Хорошо, мы все любим автозаполнение. Например:
num = 12
num. <tab>
и его автозаполнение функций-членов и т. Д., Которые есть у type(int)
.
Допустим, у меня есть структура структуры папок
my_folder
a.py
super_useful.py
и содержимое super_useful.py
:
from collections import namedtuple
class Point(namedtuple('Point', ['row', 'col'])):
def some_generic_function(self) -> int:
return 12
Под a.py
Я планирую использовать порции Point
, но на самом деле никогда не нужно их создавать. Я просто буду обрабатывать Point
объектов. В настоящее время у меня есть:
from typing import Dict, TYPE_CHECKING
if TYPE_CHECKING:
from super_useful import Point
class Grid():
def __init__(self, num_rows: int, num_cols: int):
self.num_rows = num_rows
self.num_cols = num_cols
self._grid: Dict['Point', int] = {}
def add(self, point: 'Point') -> None:
point.som # <----- This doesn't actually autocomplete
Но проблема, с которой я сталкиваюсь, заключается в том, что при вводе point.som <tab>
автозаполнение отсутствует. Я могу обойти это так:
from typing import Dict, TYPE_CHECKING
# if TYPE_CHECKING:
from super_useful import Point
class Grid():
def __init__(self, num_rows: int, num_cols: int):
self.num_rows = num_rows
self.num_cols = num_cols
self._grid: Dict[Point, int] = {}
def add(self, point: Point) -> None:
point.som <tab> # <---- autocomplete now works and shows point.some_generic_function
Итак, я думаю, есть два вопроса:
1. Я неправильно использую TYPE_CHECKER
здесь? Я пробовал mypy, pep8
и flake8
, и ни один из них, похоже, не выполняет автозаполнение для меня.
2. Не плохо ли импортировать Point
только для того, чтобы я мог использовать автозаполнение?