使用 class 方法设置初始实例参数

Setting initial instance parameter using a class method

我有这个代码:

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)

如您所见,我想从文本文件中随机设置名字。但是我收到这个错误:

def set_first_name(自我)^ 语法错误:语法无效

我认为不可能在 class 实例的初始化中调用 class 方法。至少不是我这样做的方式。有人可以给我一个快速提示吗?我想有一个简单的解决方法。

谢谢

您的方法不是 class 方法,您只是缺少 set_first_name 方法的 def 行末尾的分号。

首先,如前所述 - 您在定义行中错过了 :。 第二:即使你修复了它 - 你也会得到 NameError 因为 set_first_name 不在全局范围内。最后 - set_first_name 没有 returns 任何东西,所以你会得到 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)