+ Antworten
Ergebnis 1 bis 3 von 3

Thema: takeItem() und del - Was passiert hier?

  1. #1
    User Kilobyte Themenstarter
    Avatar von Greta
    Registriert seit
    15.08.2013
    Ort
    im Büro
    Fachbeiträge
    178
    Genannt
    32 Post(s)
    Hallo zusammen,

    ich darf gerade eine Anwendung die in Python geschrieben wurde nach Java portieren. Ich habe keinerlei Kenntnisse von Python.

    Folgendes Stück scheint mir etwas paradox zu sein:

    Code:
    # die releaseListView ist eine QListView
    item = self.releaseListView.firstChild()
    while item.firstChild():
        childItem = item.takeItem(item.firstChild())
        del childItem
    Ich verstehe den Code so:
    solange das item ein Kind-Element hat, nehme dieses aus der Liste und lösche es.

    Laut: python - How can I remove a QListWidgetItem from a QListWidget and refresh the display? - Stack Overflow macht takeItem() das gleiche wie pop() und pop löscht anhand des Index ein Element aus der Liste.

    und del löscht ein Variable, bzw. gibt deren Speicher wieder frei vgl. When is del useful in python? - Stack Overflow

    Ist das dann nicht doppelt oder übersehe ich hier etwas?


    PS: falls einer einen Link zur API von Python 2.5 hat, immer her damit
    Ich bin so klug, K L U K!!!

  2. #2
    User Viertel Megabyte Avatar von mdickie
    Registriert seit
    19.08.2011
    Ort
    Neuland
    Fachbeiträge
    268
    Genannt
    16 Post(s)
    del bedeutet in dem Fall nur, dass du die Variable aus dem Scope entfernst. Der dazugehörige Speicher selbst wird durch Referenzzählung freigegeben. Mit takeItem bekommst du eine Variable zurück, du musst sie aber nicht nützen. Daher würde folgendes reichen:
    Python Code:
    1. while item.firstchild():
    2.     item.takeItem(item.firstChild())
    Geändert von mdickie (26.01.2017 um 09:30 Uhr)
    Eigentum ist böse! Gib' es mir, weil du ja damit nichts damit anfangen kannst. Wenn du Eigentum trotzdem gut findest, dann gefällt dir vielleicht Defective by Design

  3. Es bedanken sich:
    Greta (26.01.2017)
  4. #3
    User Kilobyte Themenstarter
    Avatar von Greta
    Registriert seit
    15.08.2013
    Ort
    im Büro
    Fachbeiträge
    178
    Genannt
    32 Post(s)
    danke dir, dann hab ich das also doch nicht ganz falsch verstanden

    Hab das jetzt so nach Java "übersetzt"
    Java Code:
    1. if(item.hasChildren()){
    2.     item.getChildren().clear();
    3. }
    Ich bin so klug, K L U K!!!

+ Antworten Thema als "gelöst" markieren

Direkt antworten Direkt antworten

Wie lautet das letzte Wort am Ende dieser Webseite?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Threads - Was passiert ?
    Von dehlen im Forum Hausaufgaben
    Antworten: 4
    Letzter Beitrag: 24.06.2015, 21:09
  2. (ResultSet) Was passiert, wenn man ein ResultSet nicht schließt?
    Von Unregistriert im Forum Datenbankprogrammierung
    Antworten: 2
    Letzter Beitrag: 29.05.2014, 09:08
  3. (Eclipse) Was ist Luna und was ist mit Kepler passiert?
    Von Prototype im Forum IDEs & Tools
    Antworten: 5
    Letzter Beitrag: 21.01.2014, 13:55
  4. (Schleifen) For-Schleife mit Switch Statement, ohne break. Was passiert im Programm?
    Von NikeAir22 im Forum Java-Grundlagen
    Antworten: 11
    Letzter Beitrag: 26.08.2013, 10:26
  5. Was ist mit Java Forum org passiert?
    Von asmsys im Forum Spielwiese
    Antworten: 7
    Letzter Beitrag: 02.08.2013, 17:21

Stichworte

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •