Autor
Python: Ausgabe privates Attribut nach Vererbung
Spedex
Aktiv Dabei seit: 19.03.2020 Mitteilungen: 663
Herkunft: f(x=0)=1/x
Hallo, folgender Code:Python
copy class Haus:
Anzahl_Haus = 0
def __init__ ( self , Adresse, Hoehe, Etagenanzahl) :
self .__Adresse = Adresse
self .Hoehe = Hoehe
self .Etagenanzahl = Etagenanzahl
Haus.Anzahl_Haus += 1
def get_Adresse( self ) :
return ( self .__Adresse)
def __str__ ( self ) :
return ( f"Adresse: {self.__Adresse}, Höhe: {self.Hoehe}, Etagenanzahl: {self.Etagenanzahl}" )
def __lt__ ( self , other) :
return ( self .Hoehe < other.Hoehe )
class Wolkenkratzer( Haus) :
Anzahl_Wolkenkratzer = 0
def __init__ ( self , Adresse, Hoehe, Etagenanzahl, Name) :
self .Name = Name
Haus.__init__ ( self , Adresse, Hoehe, Etagenanzahl)
Wolkenkratzer.Anzahl_Wolkenkratzer += 1
def __str__ ( self ) :
return ( f"Name: {self.Name}, Adresse: {self.__Adresse} \
Hoehe: {self.Hoehe}, Etagenanzahl: {self.Etagenanzahl}" )
Man sieht, dass die Klasse Wolkenkratzer von der Klassen Haus erbt. In beiden Klasse befindet sich die Methode __init__ . Doch die Ausgabe der Adresse mittels print(Klasse) funktioniert nur bei der Haus , jedoch nicht bei Wolkenkratzer . Wenn ich die Adresse bei Wolkenkratzer ausgeben möchte, muss ich anstelle von self.__Adresse self.get_Adresse() schreiben.
Meine Frage: Wieso ist das so, wieso funktioniert es bei der einen Klasse schon und bei der anderen (vererbten) Klasse nicht?
Liebe Grüße
Spedex
Notiz Profil
Quote
Link
DerEinfaeltige
Senior Dabei seit: 11.02.2015 Mitteilungen: 2698
Beitrag No.1, eingetragen 2021-01-20
Das private Attribut heißt (extern) nicht __Adresse, sondern _Haus__Adresse.
Python
copy class Haus:
Anzahl_Haus = 0
def __init__ ( self , Adresse, Hoehe, Etagenanzahl) :
self .__Adresse = Adresse
self .Hoehe = Hoehe
self .Etagenanzahl = Etagenanzahl
Haus.Anzahl_Haus += 1
def get_Adresse( self ) :
return ( self .__Adresse)
def __str__ ( self ) :
return ( f"Adresse: {self.__Adresse}, Höhe: {self.Hoehe}, Etagenanzahl: {self.Etagenanzahl}" )
def __lt__ ( self , other) :
return ( self .Hoehe < other.Hoehe )
class Wolkenkratzer( Haus) :
Anzahl_Wolkenkratzer = 0
def __init__ ( self , Adresse, Hoehe, Etagenanzahl, Name) :
self .Name = Name
Haus.__init__ ( self , Adresse, Hoehe, Etagenanzahl)
Wolkenkratzer.Anzahl_Wolkenkratzer += 1
def __str__ ( self ) :
return ( f"Name: {self.Name}, Adresse: {self._Haus__Adresse} \
Hoehe: {self.Hoehe}, Etagenanzahl: {self.Etagenanzahl}" )
H = Haus( "Schlangengrube 9" , 12 , 3 )
W = Wolkenkratzer( "Wolke 7" , 120 , 30 , "Turm von Hanoi" )
print ( H)
print ( W)
-----------------Why waste time learning when ignorance is instantaneous?
- Bill Watterson -
Notiz Profil
Quote
Link
Spedex
Aktiv Dabei seit: 19.03.2020 Mitteilungen: 663
Herkunft: f(x=0)=1/x
Beitrag No.2, vom Themenstarter, eingetragen 2021-01-20
Ah, ok.
Gut, danke für die Erklärung!
Liebe Grüße
Spedex
Notiz Profil
Quote
Link
Spedex hat die Antworten auf ihre/seine Frage gesehen. Das Thema wurde von einem Senior oder Moderator abgehakt.Spedex wird per Mail über neue Antworten informiert. [Neues Thema] [Druckversion]
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license .
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen ,
die Distanzierung ,
die Datenschutzerklärung und das Impressum .
[Seitenanfang]