    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