ast.Invert
is a class defined in the ast
module that extends the ast.UnaryOp
class and is used to express the ~
(invert) operator in Python in the form of an parse()
method of ast
is called on a Python source code that contains a unary operator such as the invert operator, the ast.Invert
class is invoked to convert the invert operation to an ast
tree data structure.
NOTE:
~
is the bitwise NOT operator that inverts all the bits.
import astfrom pprint import pprintclass UnaryOpVisitor(ast.NodeVisitor):def visit_UnaryOp(self, node):print('Node type: UnaryOp\nFields: ', node._fields)self.generic_visit(node)def visit_Constant(self,node):print('Node type: Constant\nFields: ', node._fields)ast.NodeVisitor.generic_visit(self, node)visitor = UnaryOpVisitor()tree = ast.parse('~4000', mode='eval')pprint(ast.dump(tree))visitor.visit(tree)
UnaryOpVisitor
class that extends from the parent class ast.NodeVisitor
. We override the predefined visit_UnaryOp
and visit_Constant
methods in the parent class, which receive the UnaryOp
and Constant
nodes, respectively. In the method, we print the type and the fields inside the node and call the generic_visit()
method, which invokes the propagation of the visit on the children nodes of the input node.visitor
object of the class UnaryOpVisitor
.~4000
and send it to the ast.parse()
method with mode='eval'
, which returns the result of the expression after evaluation and store it in tree
.ast.dump()
method returns a formatted string of the tree structure in tree
.visit
method available to the visitor
objects visits all the nodes in the tree structure.Free Resources