Ошибка типа при использовании класса данных python

#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']