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.

Code: Alles auswählen

ladyBlack = misterX
ladyBlack.namenSagen()
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
:D