0

让我们考虑以下文件myfile.py

def f_1():
    print("Run !")

def f_2():
    print("Run, run !")

class Test():
    def __new__(cls):
        print("In the class", dir())

print("After class", dir())
Test()

我想访问在我的类之前定义的所有函数。内部目录是关于类而不是文件,如上面的输出所示。

After class ['Test', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'f_1', 'f_2']
In the class ['cls']

一种解决方案是在类之前添加一个全局常量previousnames = dir(),但有更好的方法吗?

4

1 回答 1

1

正如我在评论中所说:要明确,不要尝试进行动态功能发现。dir无论如何都不打算用于程序化使用;它是在交互式 shell 中使用的助手。

def f_1():
    print("Run !")

def f_2():
    print("Run, run !")

for_Test = [f_1, f_2]

class Test():
    def __new__(cls):
        for f in for_Test:
            # Based on your linked question
            setattr(cls, f.name, f)
于 2015-04-26T17:28:22.427 回答