Seite 1 von 1
steh auf dem "self" Schlauch
Verfasst: Mittwoch 15. Januar 2014, 20:00
von vegan
Ich muss mich mal wieder peinlich machen weil ich etwas wissen will, was wahrscheinlich erbärmlich simpel ist.
Ich spiel hier so rum und hatte versucht in einer Klasse self aufzurufen, also die Instanz. Ich versuche Infos im Internet zu finden weiß aber auch nich genau wonach ich suchen soll.
Beispiel:
Code: Alles auswählen
class Mensch:
def namenSagen(self):
print("Mein Name ist " + self)
misterX = Mensch()
misterX.namenSagen()
>>> Mein Name ist misterX
Diese Prinzip funktioniert nicht bei mir, also meine Frage:
Hab ich einen Flüchtigkeisfehler drin oder ist das Prinzip gänzlich falsch?
Wie würde es richtig funktionieren?
Sorry, wenn die Frage zu blöd ist und vorab schonmal danke fürs partizipieren.
Re: steh auf dem "self" Schlauch
Verfasst: Mittwoch 15. Januar 2014, 20:02
von BlackJack
@vegan: Arbeite ein Tutorial durch. Sprachkonstrukte raten ist keine sinnvolle Art zu lernen. In der Python-Dokumentation ist ein Tutorial. Und für absolute Programmieranfänger wird oft
Learn Python The Hard Way empfohlen.
Re: steh auf dem "self" Schlauch
Verfasst: Mittwoch 15. Januar 2014, 20:46
von cofi
Zusaetzlich zu BlackJack: Du bist total auf dem Holzweg.
Was wuerdest du hier erwarten?
Oder bei:
Code: Alles auswählen
population = [Mensch(), Mensch(), Mensch()]
for human in population:
human.namenSagen()
`self` ist das Exemplar selbst, aber eben nicht der Name an den es gebunden ist (wenn es denn ueberhaupt an einen Namen gebunden ist!). Wenn deine Menschen einen Namen haben sollen, musst du ihnen einen solchen als Attribut zuweisen (z.b. in ``__init__``) und dann das Attribut in deiner Methode benutzen.
Re: steh auf dem "self" Schlauch
Verfasst: Mittwoch 15. Januar 2014, 21:33
von vegan
Ah, danke. Sowas hatte ich mir schon gedacht, brauchte aber professionelle Verifizierung.
Sorry nochmal für die noobige Frage. Python Tutorials arbeite ich ohnehin schon durch. Ich bleib am Ball.
Re: steh auf dem "self" Schlauch
Verfasst: Donnerstag 16. Januar 2014, 09:09
von Hyperion
@vegan: Vielleicht hilft Dir dieser
Thread auch weiter.
Re: steh auf dem "self" Schlauch
Verfasst: Donnerstag 16. Januar 2014, 09:33
von /me
Bezeichnernamen sind Bezeichnernamen und nicht mehr. Wenn du dem Menschen direkt bei der Erstellung einen Namen geben willst ("Gib mir Tiernamen!" *räusper*), dann verwende einen passenden Konstruktor dem du den Namen mitgibst.
Code: Alles auswählen
class Mensch:
def __init__(self, name):
self.name = name
def say_name(self):
print('My name is {}'.format(self.name))
mister_x = Mensch('Mister X')
mister_x.say_name()
unknown_person = mister_x
unknown_person.say_name()
Re: steh auf dem "self" Schlauch
Verfasst: Donnerstag 16. Januar 2014, 18:26
von vegan
/me hat geschrieben:Bezeichnernamen sind Bezeichnernamen und nicht mehr. Wenn du dem Menschen direkt bei der Erstellung einen Namen geben willst ("Gib mir Tiernamen!" *räusper*), dann verwende einen passenden Konstruktor dem du den Namen mitgibst.
Hyperion hat geschrieben:@vegan: Vielleicht hilft Dir dieser
Thread auch weiter.
Jo, danke auch an euch. Auch das hat mir noch ein Stück weitergeholfen.
Im Allgemeinen möchte ich TrayserCassa aus dem verlinkten Thread zitieren: Viel Dank an alle. Das war mehr wert als ein Tutorial
