Код
Пример класса заглушки
Код: Выделить всё
@dataclass()
class Personnel:
person: Person
employee: Optional[Employee]
@dataclass()
class Employee:
department: str
jobs: list[Job]
Текущий шаблон, который я использую для получения всех должностей для каждого сотрудника, выглядит следующим образом:
Код: Выделить всё
all_jobs = [
job
for personnel in all_personnel_list if personnel.employee is not None
job for job in personnel.employee.jobs
]
Желаемая реализация
Я хотел бы иметь возможность сделать что-то вроде этого:
Код: Выделить всё
def is_employee(x: Personnel):
return x.employee is not None
all_jobs = [
job
for personnel in all_personnel_list if is_employee(personnel)
job for job in personnel.employee.jobs
]
code> и предупреждает меня, что я не обрабатываю случай, когдаpersonal.employee имеет значение None. Я понимаю, что использовать этот вспомогательный метод для такого простого примера кажется немного глупым, но мой фактический вариант использования будет использовать более сложные вспомогательные методы, и я бы хотел, чтобы они имели описательные имена, а не были цепочкой из и заявлений.
Я также не совсем уверен, как формально описать эту проблему, поэтому прошу прощения, если это дубликат.
Подробнее здесь: https://stackoverflow.com/questions/786 ... d-function