【问题标题】:Global or static function in python classes?python类中的全局或静态函数?
【发布时间】:2022-01-24 03:27:53
【问题描述】:

我有一个管理摄像机和文件流的类。类的每个实例都是一个框架,其中包含一堆方法、属性等。我在函数外部进行所有初始化,所以它只发生一次,并设置了一些对类的所有实例都是全局的变量。这些全局变量包括我需要在主程序关闭时正确关闭的 Video 和 File 对象。

我是 Python 新手,主要是 Java/C/C++ 背景,我记得有与我可以调用的访问全局(静态)类变量的类相关联的函数。我可以在 Python 中做类似的事情吗?

这是我的类的伪代码:

class MyClass:
      global_variable = 1
      openFile = file.open()

      def someMethod( self ):
          do stuff 

      def cleanUpStuff():
            self.openFile.release()

现在在我的主程序中,我需要调用 cleanUpStuff() 来正确关闭我的相机和文件。我正在创建数百个 MyClass 对象实例,我使用这些实例并在某些时候被垃圾收集销毁。所以我需要一种在类级别调用的方法。

    while True:
       a = MyClass()
       a.someMethod()

       if something:
          break  
    MyClass.cleanUpStuff()

【问题讨论】:

标签: python class methods


【解决方案1】:

感谢约翰,这似乎完全符合我的要求。我不知道“装饰器”,所以我不知道为什么这完全有效,但这是我现在可以遵循的路径,至少我已经解决了这个问题......

@classmethod
def cleanUpStuff( MyClass ):
   MyClass.openFile.release()

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2012-03-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
相关资源
最近更新 更多