Допустим, у меня есть класс данных python:
@dataclass
class Person:
name: str
age: int
married: bool
И добавляю данные в поля скажем из воображаемого словаря:
for row in something:
ob = Person(
name=row.name,
age=row.age,
married=row.married,
)
Как мне, например, сделать name
равным None
или пустой строке, если name
не задано в воображаемом словаре?
Я пробовал что-то вроде:
name = row.name if row.name else None
но я получил ошибку атрибута, например: AttributeError: object has no attribute 'name'
Изменить: я хочу добиться этого без обязательной установки полей в классе данных Person
на None
row['name']
, а если бы этого ключа не существовало, вы бы использовалиrow.get('name')
для получения желаемого эффекта. Для любого случайного объекта эквивалентgetattr(row, 'name', None)
. - person deceze♦   schedule 10.05.2021row
? Если это словарь, вы можете попробоватьname = row['name'] if 'name' in row else None
- person h0r53   schedule 10.05.2021row.get('name')
уже инкапсулирует этот шаблон. - person deceze♦   schedule 10.05.2021getattr(row, 'name', None)
. Спасибо! - person PercySherlock   schedule 10.05.2021row
— это namedTuple. - person PercySherlock   schedule 10.05.2021