Source code for professors
from typing import Iterable, Optional
[docs]class Professor:
"""
A professor is one or many people in charge of a given academical event.
:param name: the name(s)
:type name: str
:param email: the email(s)
:type email: Optional[str]
"""
def __init__(self, name: str, email: Optional[str] = None):
self.name = name
self.email = email
def __str__(self):
if self.email is not None and len(self.email) > 0:
return f"{self.name} ({self.email})"
else:
return self.name
[docs]def merge_professors(professors: Iterable[Professor]) -> Professor:
"""
Merges multiple professors into one.
:param professors: multiple professors
:type professors: Iterable[Professor]
:return: the new professor
:rtype: Professor
:Example:
>>> p1 = Professor('Jean Moulin', 'jean.moulin@mail.com')
>>> p2 = Professor('Marc Potier', 'marc.potier@mail.com')
>>> p3 = merge_professors((p1, p2))
"""
name = " & ".join(professor.name for professor in professors)
email = " & ".join(professor.email for professor in professors if professor.email)
if len(email) > 0:
return Professor(name, email)
else:
return Professor(name)