def visit_ClassDef(self, node):
# Create the stub in the old context.
old_stub = self.parent_stub
self.parent_stub = Stub('class', node.name,old_stub, self.context_stack)
self.add_stub(self.stubs_dict, self.parent_stub)
# Enter the new context.
self.class_name_stack.append(node.name)
self.context_stack.append(node.name)
if self.trace_matches or self.trace_reduce:
print('\nclass %s\n' % node.name)
# Format...
bases = [self.visit(z) for z in node.bases] if node.bases else []
if getattr(node, 'keywords', None): # Python 3
for keyword in node.keywords:
bases.append('%s=%s' % (keyword.arg, self.visit(keyword.value)))
if getattr(node, 'starargs', None): # Python 3
bases.append('*%s', self.visit(node.starargs))
if getattr(node, 'kwargs', None): # Python 3
bases.append('*%s', self.visit(node.kwargs))
if not node.name.startswith('_'):
if node.bases:
s = '(%s)' % ', '.join([self.format(z) for z in node.bases])
else:
s = ''
self.out('class %s%s:' % (node.name, s))
# Visit...
self.level += 1
for z in node.body:
self.visit(z)
self.context_stack.pop()
self.class_name_stack.pop()
self.level -= 1
self.parent_stub = old_stub
# 2: FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list)
# 3: FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list,
# expr? returns)
评论列表
文章目录