У меня есть следующие классы данных.
@dataclass
class Package:
'''Class for keeping track of one destination.'''
_address: []
@dataclass
class Destination:
'''Class for keeping track of a destination.'''
_start: str
_end: str
_distance: float
def __init__(self, param):
self._start = param[0]
self._end = param[1]
self._distance = param[2]
и следующий класс данных, который вызывает указанный выше класс.
@dataclass
class DestinationContainer:
'''Class for keeping track of a package destination.
and all the possible combinations of potential next destination '''
_package: Package
_destinations: List[Destination]
def __init__(self):
pass
def addPkg(self,param):
self._package = param
Я получаю следующую ошибку при попытке запустить программу
TypeError: параметры универсальных типов должны быть типами.
Я также пробовал таким образом вызвать участника _destinations
.
_destinations: List[Destination] = field(default_factory=list)
Затем я получаю следующую ошибку
TypeError: параметры универсальных типов должны быть типами.
Я также попытался установить член класса как
_destinations: []
И после проверки объекта-экземпляра внутри класса нет списка.
Я тоже пробовал.
_destinations: List = field(default_factory=lambda: [])
и я получаю следующую ошибку при попытке добавить в список
AttributeError: объект 'DestinationContainer' не имеет атрибута '_destinations'
Destination
? Ошибка связана сList[Destination]
, потому что думает, чтоDestination
не является типом. Кроме того, вам вообще не следует определять свой собственный__init__
.@dataclass
создаст его для вас. Вы должны использовать__post_init__
, если вам нужно что-то сделать. сверх того. - person Patrick Haugh   schedule 11.01.2019