Введите подсказку из родительского класса
Как вы можете намекнуть класс из родительского класса, как это?
class Cls1:
class Cls2:
p2: int
class Cls3:
p3: Cls2 # undefined name 'Cls2'
class Cls4:
p4: Cls2 # undefined name 'Cls2'
1 ответ
Да, см. PEP 484 §Пересылки:
Когда подсказка типа содержит имена, которые еще не определены, это определение может быть выражено как строковый литерал, который будет разрешен позже.
Ситуация, в которой это обычно происходит, - это определение класса контейнера, где определяемый класс встречается в сигнатуре некоторых методов.
Итак, в вашем примере, ссылка на еще не определенный тип в строке:
class Cls1:
class Cls2:
p2: int
class Cls3:
p3: 'Cls2'
class Cls4:
p4: 'Cls2'
Обратите внимание, что хотя Python с радостью принимает вышесказанное, mypy (v0.641), похоже, содержит ошибку и не может найти Cls2
,