Underlyingf C/C++ object has been deleted

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

Hallo Leute,


Habe jenes Problem - mein Quelltext schaut so aus:

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
FTP.py
"""

from PyQt4.QtNetwork import QFtp

class FTP_Update(QFtp):
    
    def __init__(self, host, user, passwd):
        self.connection = self.connectToHost(host)
        self.connection.login(user, passwd)
        
        
Ftp = FTP_Update('dl4002', 6, 6)
Meine Fehlermeldung so:

Code: Alles auswählen

>>> execfile(r'C:\FTP.py')
Traceback (most recent call last):
  File "C:\FTP.py", line 15, in <module>
    Ftp = FTP_Update('dl4002', 6, 6)
  File "C:\FTP.py", line 11, in __init__
    self.connection = self.connectToHost(host)
RuntimeError: underlying C/C++ object has been deleted
>>> 
Dieser Fehler kommt aber nicht nur bei dem Code, sondern auch bei dem Versuch ein Matplotlibwidget zu schreiben usw.
Woran liegt dies?


Ich hab doch nirgends den Befehl zum Löschen gegeben, oder doch?



lg,
...
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

Hat sich aufgelöst.

QFtp.__init__(self) muss als erstes in __init__(): aufgerufen werden.
lunar

Ist die Unterklasse denn überhaupt gerechtfertigt? Der gezeigte Quelltext jedenfalls lässt sich in einer Funktion auch einfacher haben …
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

Möglicherweise nicht...
Das kann ich leider nicht immer wirklich gut beurteilen.

Der gezeigte Quelltext ist auch erst der Anfang.
Mitlerweile bin ich aber bei diesem Problem direkt auf ftplib umgestiegen, und da läuft meine Klasse jetzt.

Ich benötigte eine Funktion um einen Ordner auf meinem Rechner auf den selben Stand zu bringen wie auf dem Server, sowie umgekehrt...

Allerdings: Das Problem trat ja nicht nur bei diesem Code auf, sondern auch z.B. beim erstellen eines Matplotlibwidgets.

Ich denke aber, das es sich dort gleich lösen lässt.


lg,
...
lunar

Wenn Du den Konstruktor der abgeleiteten Klasse nicht aufrufst, sind Fehler immer anzunehmen (wenn auch nicht so "rabiat") …

Solche Zusammenhänge musst Du verstanden haben, wenn Du mit Klassen programmieren möchtest.
Antworten