作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下数据类。
@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: Parameters to generic types must be types.
_destinations
成员(member)这样。
_destinations: List[Destination] = field(default_factory=list)
TypeError: Parameters to generic types must be types.
_destinations: []
_destinations: List = field(default_factory=lambda: [])
AttributeError: 'DestinationContainer' object has no attribute '_destinations'
最佳答案
正如帕特里克在评论中所说,您的主要问题是您定义自己的 __init__
使用时的函数 @dataclass
.如果您删除它并稍微重组您的代码,它应该会按预期工作:
from dataclasses import dataclass
from typing import List
@dataclass
class Package:
_address: List[str]
@dataclass
class Destination:
_start: str
_end: str
_distance: float
@dataclass
class DestinationContainer:
_package: Package
_destinations: List[Destination]
def addPkg(self, param):
# sure this shouldn't be "self._package.append(param)"?
self._package = param
# works
dc = DestinationContainer(
Package(['some address']),
[Destination('s', 'e', 1.0)]
)
# also works
dc.addPkg(Package(['some other address']))
关于python-3.x - 如何在 Python 3.7.x 中使用带有 @dataclass 的 list[customClass] 作为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54140585/
我是一名优秀的程序员,十分优秀!