2017-10-14 34 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如果你有兴趣。 –

相关问题