1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import datetime
- import typing
- class Person:
- def __init__(self, identifier: str):
- self.identifier: str = identifier
- self.name: typing.Optional[str] = None
- self.birth_date: typing.Optional[datetime.date] = None
- self.mother: typing.Optional["Person"] = None
- self.father: typing.Optional["Person"] = None
- def __repr__(self) -> str:
- """
- >>> p = Person("max-mustermann")
- >>> repr(p)
- 'Person(max-mustermann)'
- >>> p.name = "Hr. Mustermann"
- >>> repr(p)
- 'Person(max-mustermann, Hr. Mustermann)'
- >>> p.name = "Max Mustermann"
- >>> repr(p)
- 'Person(max-mustermann, Max Mustermann)'
- >>> p.birth_date = datetime.date(1976, 2, 1)
- >>> repr(p)
- 'Person(max-mustermann, Max Mustermann, *1976-02-01)'
- """
- return "{}({})".format(
- type(self).__name__,
- ", ".join(
- filter(
- None,
- (
- self.identifier,
- self.name,
- "*" + self.birth_date.isoformat()
- if self.birth_date is not None
- else None,
- ),
- )
- ),
- )
- def __str__(self) -> str:
- """
- >>> p = Person("max-mustermann")
- >>> p.name = "Max Mustermann"
- >>> str(p)
- 'Max Mustermann'
- >>> p.birth_date = datetime.date(1976, 2, 1)
- >>> str(p)
- 'Max Mustermann (*1976-02-01)'
- """
- return (self.name or "unnamed") + (
- " (*{})".format(self.birth_date.isoformat()) if self.birth_date else ""
- )
|