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_inst。 count变量在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')
现在您可以在笔记本中导入所需的一切内容。
我的这个模块包含 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_inst。 count变量在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')
现在您可以在笔记本中导入所需的一切内容。