如何从 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 实例化时自动运行,但您可以定义自己的方法。