gpt4 book ai didi

python - 如何获取类方法中定义的所有变量的名称

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:50 25 4
gpt4 key购买 nike

我有以下类(class):

class Foo(object):
def setUp(self):
self.var1 = "some value"
self.var2 = something
def bar(self):
var3 = some value
def baz(self, var):
var4 = some value

我想打印方法中定义的所有变量的名称,例如:

setUp, bar, baz, var1, var2, var3, var4

我试过使用 locals()、vars()、globals(),但我只得到方法的名称,而不是变量名称。

我也尝试过使用 ast 模块,但没有成功。

最佳答案

您可以使用 ast.parse生成AST节点。那么ast.walk可用于递归迭代节点及其后代。对于每个节点,您可以检查类型,然后提取正确的属性。

下面是一个使用您的代码的示例,但不要指望它能像这样处理更复杂的文件:

source = '''
class Foo(object):
def setUp(self):
self.var1 = "some value"
self.var2 = 1
def bar(self):
var3 = 2
def baz(self, var):
var4 = var
'''

import ast

def hack(source):
root = ast.parse(source)

for node in ast.walk(root):
if isinstance(node, ast.Name) and isinstance(node.ctx, ast.Store):
yield node.id
elif isinstance(node, ast.Attribute):
yield node.attr
elif isinstance(node, ast.FunctionDef):
yield node.name

print(list(hack(source)))

输出:

['setUp', 'bar', 'baz', 'var1', 'var2', 'var3', 'var4']

关于python - 如何获取类方法中定义的所有变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41115160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com