def __init__(self, person: Person, role: str, since=None, until=None, *args, **kwargs): super(Member, self).__init__(*args, **kwargs) self._person = person self._since = datetime.now() if until is None else since self._until = until @property def person(self): return self._person @attribute def since(self): return self._since @attribute def until(self): return self._until if __name__ == "__main__": todd = Person.__create__(name='Todd',email='*****@*****.**') member = Member.__create__(person=todd, role='test') other = Person.__create__(name='other',email='*****@*****.**') try: member.person = other except AttributeError as e: assert str(e) == 'can\'t set attribute' finally: assert member.person is not other
def test_can_add_a_member_to_an_expert(): ep = ExpertPanel.__create__(name="panel") person = Person.__create__(name="tj ward", email="*****@*****.**") ep.add_member(Member.__create__(person=person, role='programmer')) assert len(ep.members) == 1