【发布时间】:2019-06-06 00:36:31
【问题描述】:
我有以下数据类。
@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__。
标签: python-3.x oop python-dataclasses