我创建了两个不同的类,我需要从另一个类中删除一个类中的对象。
这是代码的一部分:
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
?
答案 0 :(得分:2)
我在评论中的含义是这样的:
鉴于两个类A
,B
其中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'