Bir ctypes arayüzünde C++ yeni arayarak oluşturulan bazı C++ nesneleri silmek, ben tanımladığınız bir sınıfta bir __del__
yöntemi var. Sınıfımın bir örneği yok olduğunda bu nesneleri silmek istiyorum. Sınıfın bir parçası burada gösterilen vardır:Python 3, süper .__ del __()
class Graph(QtCore.QObject):
def __init__(self):
super().__init__()
#list of objects created by calls to ctypes to create pointers to C++ objects which are instantiated with C++ new
self.graphs = []
def __del__(self):
print("in delete method")
for graph in self.graphs:
# call the C++ delete to free the storage used by this graph
myctypes.graphDelete(graph)
super().__del__()
benim Grafik sınıfının bir örneği silindiğinde, __del__
yöntemi denir ve benim baskı bildiriminebakın ve ben de yoketme yöntemi bir kesme noktası ayarlamak C++ kodu, beklendiği gibi, nesneyi siler. Ben çocuk sınıfta kendi __del__
yöntemini tanımlamak veya olacak eğer üst sınıf (QtCore.QObject) silinir sağlamak nasıl
super().__del__()
AttributeError: 'super' object has no attribute '__del__'
: my __del__
yöntem super().__del__()
çağırdığında Ancak, şu hata mesajını alıyorum Ebeveyn sınıfı otomatik olarak silinecek mi?
. Bu bir fark yaratmamalı, ama belki işe yarıyor. – kay
Teşekkürler Kay, her ikisini de denedim ve hala öznitelik hatasını alıyorum. – inwhack
@inwhack, ben çöp toplayıcı görevini yapacak inanıyoruz temizleme yukarı kullanılmayan örnekleri/değişkenler –