擅长:python、mysql、java
<p>您可以使用<code>_ast</code>模块来完成此操作。例如,如果示例代码位于<code>foo.py</code>中,则可以使用<code>"foo.py"</code>和<code>"FriendlyMessagePrinter"</code>作为参数调用此函数。</p>
<pre><code>def is_abstract(filepath, class_name):
astnode = compile(open(filename).read(), filename, 'exec', _ast.PyCF_ONLY_AST)
for node in astnode.body:
if isinstance(node, _ast.ClassDef) and node.name == class_name:
for funcdef in node.body:
if isinstance(funcdef, _ast.FunctionDef):
if any(not isinstance(n, _ast.Pass) for n in funcdef.body):
return False
return True
print 'class %s not found in file %s' %(class_name, filepath)
</code></pre>