本文整理汇总了Python中compiler.ast.Getattr方法的典型用法代码示例。如果您正苦于以下问题:Python ast.Getattr方法的具体用法?Python ast.Getattr怎么用?Python ast.Getattr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类compiler.ast
的用法示例。
在下文中一共展示了ast.Getattr方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _getattr
# 需要导入模块: from compiler import ast [as 别名]
# 或者: from compiler.ast import Getattr [as 别名]
def _getattr(self, v, current_klass, use_getattr=False):
attr_name = v.attrname
if isinstance(v.expr, ast.Name):
obj = self._name(v.expr, current_klass, return_none_for_module=True)
if obj is None and v.expr.name in self.module_imports():
# XXX TODO: distinguish between module import classes
# and variables. right now, this is a hack to get
# the sys module working.
# if v.expr.name == 'sys':
return v.expr.name+'.'+attr_name
# return v.expr.name+'.__'+attr_name+'.prototype.__class__'
if not use_getattr or attr_name == '__class__' or \
attr_name == '__name__':
return obj + "." + attr_name
return "pyjslib.getattr(%s, '%s')" % (obj, attr_name)
elif isinstance(v.expr, ast.Getattr):
return self._getattr(v.expr, current_klass) + "." + attr_name
elif isinstance(v.expr, ast.Subscript):
return self._subscript(v.expr, self.modpfx()) + "." + attr_name
elif isinstance(v.expr, ast.CallFunc):
return self._callfunc(v.expr, self.modpfx()) + "." + attr_name
else:
raise TranslationError("unsupported type (in _getattr)", v.expr)
示例2: getDeprecated
# 需要导入模块: from compiler import ast [as 别名]
# 或者: from compiler.ast import Getattr [as 别名]
def getDeprecated(self, decorators):
"""
With a list of decorators, and the object it is running on, set the
C{_deprecated_info} flag if any of the decorators are a Twisted deprecation
decorator.
"""
for a in decorators:
if isinstance(a, ast.CallFunc):
decorator = a.asList()
# Getattr is used when the decorator is @foo.bar, not @bar
if isinstance(decorator[0], ast.Getattr):
getAttr = decorator[0].asList()
name = getAttr[0].name
fn = self.expandName(name) + "." + getAttr[1]
else:
fn = self.expandName(decorator[0].name)
if fn == "twisted.python.deprecate.deprecated":
try:
self._deprecated_info = deprecatedToUsefulText(
self.name, decorator)
except AttributeError:
# It's a reference or something that we can't figure out
# from the AST.
pass
示例3: _getattr2
# 需要导入模块: from compiler import ast [as 别名]
# 或者: from compiler.ast import Getattr [as 别名]
def _getattr2(self, v, current_klass, attr_name):
if isinstance(v.expr, ast.Getattr):
call_name = self._getattr2(v.expr, current_klass, v.attrname + "." + attr_name)
elif isinstance(v.expr, ast.Name) and v.expr.name in self.module_imports():
call_name = UU+v.expr.name + '.__' + v.attrname+".prototype.__class__."+attr_name
else:
obj = self.expr(v.expr, current_klass)
call_name = obj + "." + v.attrname + "." + attr_name
return call_name
示例4: _augassign
# 需要导入模块: from compiler import ast [as 别名]
# 或者: from compiler.ast import Getattr [as 别名]
def _augassign(self, node, current_klass):
v = node.node
if isinstance(v, ast.Getattr):
# XXX HACK! don't allow += on return result of getattr.
# TODO: create a temporary variable or something.
lhs = self._getattr(v, current_klass, False)
else:
lhs = self._name(node.node, current_klass)
op = node.op
rhs = self.expr(node.expr, current_klass)
self.printo(" " + lhs + " " + op + " " + rhs + ";")
示例5: expr
# 需要导入模块: from compiler import ast [as 别名]
# 或者: from compiler.ast import Getattr [as 别名]
def expr(self, node, current_klass):
if isinstance(node, ast.Const):
return self._const(node)
# @@@ not sure if the parentheses should be here or in individual operator functions - JKT
elif isinstance(node, ast.Mul):
return " ( " + self._mul(node, current_klass) + " ) "
elif isinstance(node, ast.Add):
return " ( " + self._add(node, current_klass) + " ) "
elif isinstance(node, ast.Sub):
return " ( " + self._sub(node, current_klass) + " ) "
elif isinstance(node, ast.Div):
return " ( " + self._div(node, current_klass) + " ) "
elif isinstance(node, ast.Mod):
return self._mod(node, current_klass)
elif isinstance(node, ast.UnaryAdd):
return self._unaryadd(node, current_klass)
elif isinstance(node, ast.UnarySub):
return self._unarysub(node, current_klass)
elif isinstance(node, ast.Not):
return self._not(node, current_klass)
elif isinstance(node, ast.Or):
return self._or(node, current_klass)
elif isinstance(node, ast.And):
return self._and(node, current_klass)
elif isinstance(node, ast.Invert):
return self._invert(node, current_klass)
elif isinstance(node, ast.Bitand):
return "("+self._bitand(node, current_klass)+")"
elif isinstance(node, ast.LeftShift):
return self._bitshiftleft(node, current_klass)
elif isinstance(node, ast.RightShift):
return self._bitshiftright(node, current_klass)
elif isinstance(node, ast.Bitxor):
return "("+self._bitxor(node, current_klass)+")"
elif isinstance(node, ast.Bitor):
return "("+self._bitor(node, current_klass)+")"
elif isinstance(node, ast.Compare):
return self._compare(node, current_klass)
elif isinstance(node, ast.CallFunc):
return self._callfunc(node, current_klass)
elif isinstance(node, ast.Name):
return self._name(node, current_klass)
elif isinstance(node, ast.Subscript):
return self._subscript(node, current_klass)
elif isinstance(node, ast.Getattr):
return self._getattr(node, current_klass)
elif isinstance(node, ast.List):
return self._list(node, current_klass)
elif isinstance(node, ast.Dict):
return self._dict(node, current_klass)
elif isinstance(node, ast.Tuple):
return self._tuple(node, current_klass)
elif isinstance(node, ast.Slice):
return self._slice(node, current_klass)
elif isinstance(node, ast.Lambda):
return self._lambda(node, current_klass)
else:
raise TranslationError("unsupported type (in expr)", node)