本文整理汇总了Python中_ast.Attribute方法的典型用法代码示例。如果您正苦于以下问题:Python _ast.Attribute方法的具体用法?Python _ast.Attribute怎么用?Python _ast.Attribute使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类_ast
的用法示例。
在下文中一共展示了_ast.Attribute方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: visit_attribute
# 需要导入模块: import _ast [as 别名]
# 或者: from _ast import Attribute [as 别名]
def visit_attribute(self, node: _ast.Attribute): # value, attr, ctx
value = self._run(node.value)
t = type(value)
try:
if value in self.allowed_modules:
if node.attr in self.allowed_modules[value]:
return getattr(value, node.attr)
raise BadSyntax(f'You can not access `{node.attr}` attribute')
if value in self.allowed_class_properties:
if node.attr in self.allowed_class_properties[value]:
return getattr(value, node.attr)
raise BadSyntax(f'You can not access `{node.attr}` attribute')
except TypeError:
pass
if t in self.allowed_instance_properties:
if node.attr in self.allowed_instance_properties[t]:
return getattr(value, node.attr)
raise BadSyntax(f'You can not access `{node.attr}` attribute')
raise BadSyntax(f'You can not access attributes of {t}')
示例2: make_attribute
# 需要导入模块: import _ast [as 别名]
# 或者: from _ast import Attribute [as 别名]
def make_attribute(i, bytecode, context=None):
arg = bytecode[i][3]
attr_path = []
j = i
while True:
prev_op, prev_arg = bytecode[j][2], bytecode[j][3]
if prev_op not in (LOAD_ATTR, STORE_ATTR, DELETE_ATTR):
break
attr_path.append(prev_arg)
if j < 0:
break
j -= 1
# The parent of the ATTR can be whatever expression...
i, name = Statement.make_expr(j, bytecode)
attr = name
while True:
if not attr_path:
break
attr_name = attr_path.pop()
attr = _ast.Attribute(attr, attr_name, context)
return i, attr
示例3: visit_Name
# 需要导入模块: import _ast [as 别名]
# 或者: from _ast import Attribute [as 别名]
def visit_Name( self, node ):
new_node = LocalVar( id=node.id )
new_node._name = node.id
return ast.copy_location( new_node, node )
#-------------------------------------------------------------------------
# ReorderAST
#-------------------------------------------------------------------------
# Reorders an AST branch beginning with the indicated node. Intended
# for inverting the order of Name/Attribute chains so that the Name
# node comes first, followed by chains of Attribute/Subscript nodes.
#
# This visitor will also insert Self nodes to represent references to the
# self variable, and remove Index nodes which seem to serve no useful
# purpose.
示例4: visit_Num
# 需要导入模块: import _ast [as 别名]
# 或者: from _ast import Attribute [as 别名]
def visit_Num( self, node ):
# Name generation
node._name = str( node.n )
self.stack.append( node )
#------------------------------------------------------------------------
# Self
#------------------------------------------------------------------------
# New AST Node for references to self. Based on Attribute node.
示例5: get_rules
# 需要导入模块: import _ast [as 别名]
# 或者: from _ast import Attribute [as 别名]
def get_rules():
with open(PARSER_FILE) as f:
src = f.read()
rules = collections.OrderedDict()
for node in ast.parse(src).body:
if not isinstance(node, _ast.FunctionDef):
continue
if not node.decorator_list:
continue
assert len(node.decorator_list) == 1
decorator = node.decorator_list[0]
if not isinstance(decorator, _ast.Call):
continue
func = decorator.func
if not isinstance(func, _ast.Attribute):
continue
assert func.attr == 'production'
ln = decorator.args[0].s
name, match = ln.split(' : ', 1)
rules.setdefault(name, []).append(tuple(match.split()))
return rules