private Methode überschreiben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Twilo
User
Beiträge: 109
Registriert: Mittwoch 10. Januar 2007, 19:17
Wohnort: Berlin
Kontaktdaten:

private Methode überschreiben

Beitragvon Twilo » Sonntag 7. Oktober 2007, 18:58

Hallo,

ich möchte in etwa soetwas

Code: Alles auswählen

  def __methodenname(self, source):
    ELTERNKLASSE.__methodenname(self, source)
    ....

ich möchte, dass __methodenname noch zusätzlciher Code ausgeführt wird

meine Methode wird jedoch nicht aufgerufen, sondern nur die der Elternklasse

wenn ich die Methode wie folgt definiere "def _ELTERNKLASSE__methodenname(...):" kann ich die Methode zwar überschreiben, habe jedoch das Problem, dass ich auch alle Methoden in meiner Klasse implementieren muss, die die private Methode aufruft.

wie kann bzw. muss ich die Methode richtig erstellen?

mfg
Twilo
BlackJack

Beitragvon BlackJack » Sonntag 7. Oktober 2007, 19:18

Der doppelte führende Unterstrich ist für Attribute, die in Unterklassen ganz bestimmt nicht gebraucht werden. Wenn Du sie doch brauchst, dann lass einfach einen Unterstrich weg.
Twilo
User
Beiträge: 109
Registriert: Mittwoch 10. Januar 2007, 19:17
Wohnort: Berlin
Kontaktdaten:

Beitragvon Twilo » Montag 8. Oktober 2007, 08:37

Hallo,

BlackJack hat geschrieben:Wenn Du sie doch brauchst, dann lass einfach einen Unterstrich weg.

Die Elternklasse habe ich nicht entworfen bzw. erstellt.

Heisst das, dass ich keine Möglichkeit habe, die Methode zu überschreiben?

mfg
Twilo
BlackJack

Beitragvon BlackJack » Montag 8. Oktober 2007, 10:03

Sieht schlecht aus. Der Mechanismus ist ja wie gesagt gerade dazu da um versehentliches Überschreiben zu verhindern.

Am besten mal den Autor der Basisklasse fragen was er sich denn dabei gedacht hat.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Montag 8. Oktober 2007, 15:32

Du kannst natürlich einen Trick anwenden und die neue Klasse genauso nennen wie die alte.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/

Wer ist online?

Mitglieder in diesem Forum: brainstir, Google [Bot]