2017-10-14 1 views
0

Ich habe diesen Code verwenden:Einstellung Anfangs Instanz Parameter eine Klassenmethode

import random 

class Player: 

    def __init__(self): 
     self.first_name = set_first_name() 

    def set_first_name(self) 
     List = open("player/first_names.txt").readlines() 
     self.first_name = random.choice(List) 

Wie Sie sehen können, würde ich aus einer Textdatei zufällig Vornamen setzen will. Aber ich erhalte diesen Fehler:

def set_first_name (Selbst-)^ Syntax: ungültige Syntax

Ich nehme an, es nicht möglich ist, eine Klassenmethode innerhalb der Initialisierung einer Klasseninstanz anzurufen. Zumindest nicht so wie ich es mache. Könnte jemand mir einen kurzen Hinweis geben? Ich nehme an, dass es eine einfache Lösung dafür gibt.

Dank

+1

Sie 'verpasst:' 'nach def set_first_name (Selbst-)' –

+0

Oh Mann. Danke und Entschuldigung für den Spam. –

Antwort

1

Vor allem, wie bereits erwähnt wurde - Sie haben : in define Zeile verpasst. Zweitens: Selbst wenn Sie das beheben - Sie erhalten NameError, weil set_first_name nicht im globalen Geltungsbereich ist. Und zum Schluss - set_first_name gibt nichts zurück, so erhalten Sie first_name als None.

dass richtige Version des Codes Unter der Annahme, sollte wie folgt aussehen:

import random 

class Player: 

    def __init__(self): 
     self.first_name = self.set_first_name() 

    @staticmethod 
    def set_first_name(): 
     List = open("player/first_names.txt").readlines() 
     return random.choice(List) 
+0

Danke Yaroslav. Ich habe deine Änderungen vorgenommen. Nach dem Hinzufügen von "self" als Argument zu set_first_name() funktioniert es perfekt. Vielen Dank! –

1

Ihre Methode nicht eine Klassenmethode ist, werden Sie einfach das Semikolon aus dem Ende Ihrer def Zeile der Methode set_first_name fehlt.

+0

Danke. Das war zu schnell für SO ... –

+1

Kein Problem. Bitte upvote und akzeptiere als Antwort, wenn es geholfen hat. –

+1

Achten Sie auch auf den Begriff "Klassenmethode". Es bezieht sich auf eine bestimmte Art des Aufrufs einer Methode. Info ist hier https://Stackoverflow.com/q/12179271/4047084 wenn Sie interessiert sind. –

Verwandte Themen