Код: Выделить всё
from argparse import ArgumentParser, Namespace
def parse_args() -> Namespace:
parser = ArgumentParser()
parser.add_argument('x')
return parser.parse_args()
args = parse_args()
print('X =', args.x)
X = 4
Теперь, если я обновлю это до:
Код: Выделить всё
import typing as t
from argparse import ArgumentParser, Namespace
from dataclasses import dataclass
@dataclass
class MyArgs:
x: str
def parse_args() -> MyArgs:
parser = ArgumentParser()
parser.add_argument('x')
return t.cast(parser.parse_args(), MyArgs)
args = parse_args()
print('X =', args.x)
Код: Выделить всё
Traceback (most recent call last):
File "..." in
print('X =', args.x)
^^^^^^
AttributeError: type object 'MyArgs' has no attribute 'x'
Или может ли это быть так? возможно, что-то не так с типом MyArgs, но если да, то что? Я использую его просто как подсказку типа и ничего больше.
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-declared