Типизация объекта класса в Python
У меня есть класс User и я сделал функцию, которая на вход принимает объект этого класса, вопрос как типизировать этот аргумент
class User:
def __init__(self, *args): ...
def something(self, user: ?): ...
Если поставить туда User то Python скажет:
NameError: name 'User' is not defined
Подскажите пожалуйста что делать? Заранее спасибо!
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Вот несколько вариантов:
__future__:
from __future__ import annotations
class User:
def __init__(self, *args): ...
def something(self, user: User): ...
typing
from typing import TypeVar
t = TypeVar('User', bound='User')
class User:
def __init__(self, *args): ...
def something(self, user: t): ...
- Просто строки:
class User:
def __init__(self, *args): ...
def something(self, user: 'User'): ...
Я бы рекомендовал использовать __future__, потому что он был запланирован как стандартное включение, но пока что релиз в стандарт отложили дважды.