从另一个类中删除一个对象

时间:2016-02-04 15:53:55

标签: python oop pyqt

我创建了两个不同的类,我需要从另一个类中删除一个类中的对象。

这是代码的一部分:

class A(self):
  def __init__:
    #Some stuff in here

    self.splitter = QSplitter(Qt.Vertical)

  def createObject(self):
    plot = Matplotlist()     #This is a matplotlib figure
    self.splitter.addwidget(plot)

class B(self):
  def __init__(self):
    #Some stuff in here

  def deleteObject(self):
    delete_splitter = ?????????

如何从课程self.splitter访问课程A中的B

1 个答案:

答案 0 :(得分:2)

我在评论中的含义是这样的:

鉴于两个类AB其中class A具有__init__方法,该方法将属性val分配给从该类创建的实例:

class A(object):

    def __init__(self, val):
        self.val = val  # assign val to instance variable

    # other methods defined here..

class B可以为deleteObject实例定义一个参数的方法class A,并删除包含在其中的属性它(即val):

class B(object):

    def __init__(self):
        # initialize things

    def deleteObject(self, obj):
        # delete the attribute 'val' from object
        del object.val

您可以通过实例化 class A并使用指定的val来使用此方法:

a = A("value")
a.val  # prints value

然后将实例传递给deleteObject实例的方法B

b = B()
b.deleteObject(a)

现在,如果您尝试访问a.val,您将获得AttributeError,表明该实例没有名称为val的属性;它已被删除:

a.val
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-20-eef8eac9d06d> in <module>()
----> 1 a.val

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