from Role import Role class HierRole(Role): """ HierRole is a hierarchical role. It points to its parent roles. The hierarchy cannot have cycles. """ def __init__(self, name, description=None, superRoles=[]): Role.__init__(self, name, description) for role in superRoles: assert isinstance(role, Role) self._superRoles = superRoles[:] def playsRole(self, role): """ Returns 1 if the receiving role plays the role that is passed in. This implementation provides for the inheritance that HierRole supports. """ if self == role: return 1 for superRole in self._superRoles: if superRole.playsRole(role): return 1 return 0