#python #python-dataclasses
#python #python-классы данных
Вопрос:
@dataclass
class cntr(setup):
source:str = 'S2'
vi:str = 'SW'
# Dataframe containing information on samples
df:pd.DataFrame = pd.DataFrame()
# Available bands
bands:List[str] = field(default_factory=[])
indices:List[str] = [vi] bands
В приведенном выше коде я получаю эту ошибку для строки indices:List[str] = [vi] bands
:
*** TypeError: can only concatenate list (not "Field") to list
Как мне это исправить?
Ответ №1:
Вы можете определить indices
в __post_init__
. Он не появится в repr
, но будет доступен как свойство.
Вам также необходимо иметь вызываемый for default_factory
, поэтому list
вместо []
.
Вот упрощенный пример (поскольку я не знаю, что такое setup
:
@dataclass
class cntr():
source:str = 'S2'
vi:str = 'SW'
# Available bands
bands:List[str] = field(default_factory=list)
def __post_init__(self):
self.indices:List[str] = [self.vi] self.bands
c = cntr()
c.indices # will print: ['SW']