Seite 1 von 1

Underlyingf C/C++ object has been deleted

Verfasst: Montag 22. Februar 2010, 12:54
von ...
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,
...

Verfasst: Montag 22. Februar 2010, 14:00
von ...
Hat sich aufgelöst.

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

Verfasst: Montag 22. Februar 2010, 16:14
von lunar
Ist die Unterklasse denn überhaupt gerechtfertigt? Der gezeigte Quelltext jedenfalls lässt sich in einer Funktion auch einfacher haben …

Verfasst: Dienstag 23. Februar 2010, 14:10
von ...
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,
...

Verfasst: Dienstag 23. Februar 2010, 21:21
von 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.