2017-10-14 86 views
0

我有這樣的代碼設置初始實例參數:使用一個類的方法

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) 

正如你可以看到,我想從一個文本文件中隨機設置的第一個名字。但我收到此錯誤:

高清set_first_name(個體經營)^ 語法錯誤:無效的語法

我想這是不可能的類實例的初始化中調用一個類的方法。至少不是我這樣做的方式。 sombody能給我一個快速提示嗎?我想這是一個簡單的解決方案。

感謝

+1

你錯過':''後高清set_first_name(個體經營)' –

+0

噢,天哪。感謝和抱歉的垃圾郵件。 –

回答

1

首先,正如已經提到 - 你錯過了定義線:。第二:即使你解決了這個問題 - 你將得到NameError,因爲set_first_name不在全局範圍內。最後 - set_first_name不會返回任何內容,因此您將得到first_name作爲None

假設,你的代碼的正確的版本應該是這樣的:

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

謝謝雅羅斯拉夫。我做了你的改變。在將「self」作爲參數添加到set_first_name()之後,它完美地工作。謝謝! –

1

你的方法是不是一個類的方法,你只是缺少從set_first_name方法,你的防線末端的分號。

+0

謝謝。這太快了,所以... –

+1

沒問題。如果有幫助的話,請加註並接受答案。 –

+1

另外,要小心使用術語「類方法」。它指的是調用方法的具體方式。信息在這裏https://stackoverflow.com/q/12179271/4047084如果你有興趣。 –

相關問題