如何访问 class 中 class 之前定义的函数名称
How to access to names of functions defined before a class within the class
让我们考虑以下文件 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()
我想访问其中的 class 之前定义的所有函数。内部目录是关于 class 而不是上面输出显示的文件。
After class ['Test', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'f_1', 'f_2']
In the class ['cls']
一个解决方案是在 class 之前添加一个全局常量 previousnames = dir()
但有更好的方法吗?
正如我在评论中所说:要明确,不要尝试进行动态函数发现。 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)
让我们考虑以下文件 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()
我想访问其中的 class 之前定义的所有函数。内部目录是关于 class 而不是上面输出显示的文件。
After class ['Test', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'f_1', 'f_2']
In the class ['cls']
一个解决方案是在 class 之前添加一个全局常量 previousnames = dir()
但有更好的方法吗?
正如我在评论中所说:要明确,不要尝试进行动态函数发现。 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)