Python重新初始化对象

时间:2018-06-17 09:13:21

标签: python initialization

我有一个设置,其中控制器(或实验文件,即Python文件)重复调用两个不同的Python脚本。让我们调用控制器C,两个脚本AB

A提供逻辑,B是模拟器。

每次控制器调用A时,我都需要创建一个gameObject

以前的A代码:

# global object
gameObject = Game()   # dummy initialization to make the object "known"

class A(object):
    def __init__(self, **parameters):
        # rest of the code

    def method_start(self):  # invoked at the start of each "run"
        global gameObject
        gameObject = Game()  # reinitialize the object for the current run
        # some code

    # other methods related to the logic

    def method_end(self):
        global gameObject
        del gameObject   # destroy the object at the end of this run

目标:我现在想让gameObject成为class A的一部分。

所以我做了以下更改。

A的当前代码:

class A(object):
    def __init__(self, **parameters):
        self.gameObject = Game()  # no more global object
        # rest of the code

    def method_start(self):  # invoked at the start of each "run"
        self. gameObject = Game()  # reinitialize the object for the current run
        # some code

    # other methods related to the logic

    def method_end(self):
        del self.gameObject   # destroy the object at the end of this run

在上述更改后,在第一次"运行"结束时,gameObject被删除,我最终在method_start()中出现以下错误:

AttributeError: 'A' object has no attribute 'gameObject'

我现在的解决方法是在self.gameObject = None中制作method_end()。但是,由于这种变化,每次运行后内存消耗似乎都在稳步增加。

如何在没有内存泄漏的情况下实现我的目标?

===编辑1: 添加了示例代码

===编辑2: 删除了示例代码

我在这里给出的设置中意识到,问题并没有浮出水面!

  • 我的实际设置包含在ABC之间运行的协议服务器,通过该服务器进行通信。
  • AB都是独立的流程,C控制着它们之间的沟通!
  • 我将添加实际显示问题的示例代码。
  • 与此同时,我还将尝试调试是否有其他方法持有对gameObject的引用导致内存泄漏(如评论中所示)

0 个答案:

没有答案