<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_unary_node(self, operator, child, param=None, schema=None):
 """ Return a Unary Node whose type depends on the specified operator. :param schema: :param child: :param operator: A relational algebra operator (see constants.py) :param param: A list of parameters for the operator. :return: A Unary Node. """


        if operator == self.grammar.syntax.select_op:
            conditions = ' '.join(flatten(param))
            node = SelectNode(child, conditions)

        elif operator == self.grammar.syntax.project_op:
            node = ProjectNode(child, param)

        elif operator == self.grammar.syntax.rename_op:
            name = None
            attributes = []
            if isinstance(param[0], str):
                name = param.pop(0)
            if param:
                attributes = param[0]
            node = RenameNode(child, name, attributes, schema)

        elif operator == self.grammar.syntax.assign_op:
            name = param[0]
            attributes = [] if len(param) < 2 else param[1]
            node = AssignNode(child, name, attributes, schema)

        else:
            raise ValueError

        return node