Class 实例看不到它引用的函数

Class instance can't see a function it refers to

我的这个模块包含 class 定义和实例化,如下所示:

class TestClass:
    def __init__(self, name):
        self.name = name
    def func(self, count):
        count = test_func(count)
        return count

my_inst = TestClass('my_inst')

请注意,TestClass.func 指的是不在模块中的函数 (test_func)。然后,我打开一个笔记本,其中定义了该函数并导入 TestClass 及其实例 my_instcount变量在notebook中也有定义,所以里面的代码如下:

from test_module import *

count = 0

def test_func(count):
    count += 1
    return count

然后,我尝试 运行 my_inst.func(count) 方法...

for _ in range(10):
    count = my_inst.func(count)

...并得到一个 NameError: name 'test_func' is not defined.

这里似乎有什么问题?为什么 class 实例在笔记本中看不到 test_func?我怎样才能让它看到它?

您需要在定义了 TestClass 的文件中导入 test_func。你在做相反的事情(即,你在定义 test_func 的文件中导入 TestClass),这是错误的,永远不会起作用。

文件test_function.py:

count = 0

def test_func(count):
    count += 1
    return count

文件test_class.py:

from test_function import test_func

class TestClass:
    def __init__(self, name):
        self.name = name
    def func(self, count):
        count = test_func(count)
        return count

my_inst = TestClass('my_inst')

现在您可以在笔记本中导入所需的一切内容。