2009-10-30 23:31:35 +05:30
|
|
|
class Employee():
|
|
|
|
def __init__(self, first_name, last_name):
|
|
|
|
self._first_name = first_name
|
|
|
|
self._last_name = last_name
|
|
|
|
self._dependents = set()
|
|
|
|
|
|
|
|
@property
|
|
|
|
def first_name(self):
|
|
|
|
return self._first_name
|
|
|
|
|
|
|
|
@property
|
|
|
|
def last_name(self):
|
|
|
|
return self._last_name
|
|
|
|
|
|
|
|
@property
|
|
|
|
def dependents(self):
|
|
|
|
return self._dependents
|
|
|
|
|
|
|
|
def add_dependent(self, dependent):
|
|
|
|
dependent.set_employee(self)
|
|
|
|
self._dependents.add(dependent)
|
|
|
|
|
|
|
|
def remove_dependent(self, dependent):
|
|
|
|
if dependent in self._dependents:
|
|
|
|
self._dependents.remove(dependent)
|
|
|
|
dependent.set_employee(None)
|
2009-11-02 23:35:56 +05:30
|
|
|
|
|
|
|
def set_dependents(self, dependents):
|
|
|
|
self._dependents = dependents
|
2009-10-30 23:31:35 +05:30
|
|
|
|
|
|
|
def __eq__(self, other):
|
|
|
|
if self == other:
|
|
|
|
return True
|
|
|
|
if isinstance(other, Employee):
|
|
|
|
return (self.first_name == other.first_name
|
|
|
|
and self.last_name == other.last_name)
|
|
|
|
return False
|
|
|
|
|
|
|
|
def __str__(self):
|
2009-11-02 23:35:56 +05:30
|
|
|
return "<Employee: %s %s (%s)>" % (self._first_name, self._last_name, self.__hash__())
|
2009-10-30 23:31:35 +05:30
|
|
|
|
|
|
|
def __hash__(self):
|
|
|
|
return 31 + hash(self.__class__) + hash(self._first_name) + hash(self._last_name)
|
|
|
|
|
|
|
|
class Dependent(object):
|
|
|
|
def __init__(self):
|
|
|
|
self.first_name = None
|
|
|
|
self.last_name = None
|
|
|
|
self.employee = None
|
|
|
|
|
|
|
|
def set_employee(self, employee):
|
|
|
|
self._employee = employee
|
|
|
|
|
|
|
|
def get_employee(self):
|
|
|
|
return self._employee
|
|
|
|
|
|
|
|
def __eq__(self, other):
|
|
|
|
if self == other:
|
|
|
|
return True
|
|
|
|
if isinstance(other, Dependent):
|
|
|
|
return (self.first_name == other.first_name
|
|
|
|
and self.last_name == other.last_name)
|
|
|
|
return False
|
|
|
|
|
|
|
|
def __str__(self):
|
2009-11-02 23:35:56 +05:30
|
|
|
return "<Dependent: %s %s (%s)>" % (self.first_name, self.last_name, self.__hash__())
|
2009-10-30 23:31:35 +05:30
|
|
|
|
|
|
|
def __hash__(self):
|
|
|
|
return 31 + hash(self.__class__) + hash(self.first_name) + hash(self.last_name)
|