如何从 class 变量调用静态方法?在另一个笔记本中导入时出错
How can I call a static method from a class variable? It gives an error while importing in another notebook
我有 2 个文件:file1 和 file2 在同一目录中:
文件 1 的内容:
class Class1:
class_variable = widgets.interactive_output(Class1.static_method, {'index' : index})
@staticmethod
def static_method(index):
//body of the function
文件 2 的内容:
from file1 import Class1
当我 运行 文件 2 时,我收到以下基于调用的错误:
When I call it using:
1. Class1.static_method, {'index' : index})
I get the error:
NameError: name 'Class1' is not defined
2. static_method, {'index' : index})
I get the error:
NameError: name 'static_method' is not defined
我该如何解决这个问题?感谢任何帮助..
您在 class 变量的赋值中指的是 Class1
,但此时尚未定义 Class1
。
您可以跳过 Class1
定义中的 class 变量,稍后将其添加到 class 中:
class Class1:
@staticmethod
def static_method(index):
//body of the function
Class1.class_variable = widgets.interactive_output(Class1.static_method, {'index' : index})
不确定您打算如何在代码中使用 Class1,但问题确实是 Class1
在您引用它时未定义。您可以使用 classmethod
来定义 class 属性。
file1.py
class Class1:
@staticmethod
def static_method(index):
//body of the function
def __new__(cls, *args, **kwargs):
cls.class_variable = widgets.interactive_output(cls.static_method, {'index' : index})
return super(Class1, cls).__new__(cls)
这里我使用 __new__
作为 class 方法,因为它会在 class 实例化时自动运行,但您可以定义自己的方法。
我有 2 个文件:file1 和 file2 在同一目录中:
文件 1 的内容:
class Class1:
class_variable = widgets.interactive_output(Class1.static_method, {'index' : index})
@staticmethod
def static_method(index):
//body of the function
文件 2 的内容:
from file1 import Class1
当我 运行 文件 2 时,我收到以下基于调用的错误:
When I call it using:
1. Class1.static_method, {'index' : index})
I get the error:
NameError: name 'Class1' is not defined
2. static_method, {'index' : index})
I get the error:
NameError: name 'static_method' is not defined
我该如何解决这个问题?感谢任何帮助..
您在 class 变量的赋值中指的是 Class1
,但此时尚未定义 Class1
。
您可以跳过 Class1
定义中的 class 变量,稍后将其添加到 class 中:
class Class1:
@staticmethod
def static_method(index):
//body of the function
Class1.class_variable = widgets.interactive_output(Class1.static_method, {'index' : index})
不确定您打算如何在代码中使用 Class1,但问题确实是 Class1
在您引用它时未定义。您可以使用 classmethod
来定义 class 属性。
file1.py
class Class1:
@staticmethod
def static_method(index):
//body of the function
def __new__(cls, *args, **kwargs):
cls.class_variable = widgets.interactive_output(cls.static_method, {'index' : index})
return super(Class1, cls).__new__(cls)
这里我使用 __new__
作为 class 方法,因为它会在 class 实例化时自动运行,但您可以定义自己的方法。