让我们考虑以下文件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()
我想访问我课程中定义的所有函数。内部dir是关于类的,而不是上面输出显示的文件。
After class ['Test', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'f_1', 'f_2']
In the class ['cls']
一种解决方案是在课程之前添加一个全局常量previousnames = dir()
但是有更好的方法吗?
答案 0 :(得分: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)