这是在Python中保存指向上层对象的指针的正确方法吗?

时间:2014-02-04 11:37:05

标签: python

我正在使用python来实现一个应用程序。我有以下课程:

class A():
    def __init__(self):
        self._B_list=[]    # objects of B class will be appended as the application run
        b = B(self)        # I use A as initial parameter of B
        self._B_list.append(b)


class B()
    def __init__(self, A_object):
        self._parent = A_object      # Here I save the pointer of upper layer class object

从上面可以看出,类A有一个类B的对象列表。 B将记录其上层对象。我这样做的原因是因为类A中有一个大数据容器(20 MB),它应该被列表中的所有类B对象共享。

我认为我上面展示的方式是记忆效果。但由于我从来没有正式编写Python代码,我对此并不十分肯定。我可以请你发表意见吗?欢迎提出任何意见。

感谢。

1 个答案:

答案 0 :(得分:2)

由于只有一个A,因此您无需在每个B实例中存储指向它的指针。创建此OnlyOneA后,只需将其指定给该类 B并且B的每个实例都会找到它:

class A(): 
    def __init__(self):
        assert(not hasattr(B, '_parent')) # make sure there is only one A
        B._parent = self
        ...

然后myBB

的实例
my._parent

将获得A的实例。