如何在列表中打印类变量

问题描述 投票:0回答:1

因此,我对编码非常陌生,并且以python开头,我试图在程序中建立一个类,该程序通过随机分配DnD参与者的属性来将它们组合在一起。到目前为止,我可以使用该程序初始化党员实例,并仅向用户提示他们希望在党中选择多少个英雄。我的问题是在设置列表并将所有内容放置到位之后。我无法打印单个英雄的任何属性。无论我是从列表中调用它们还是直接尝试打印它们。我尝试使用__str__创建属性的字符串,但显然缺少某些内容。任何帮助将不胜感激。

import random


class Party:

    def __init__(self, name="", race="", alignment="", class_=""):

        self.name = name
        while name == "":
            name = random.choice(names)
            # print(name)
        self.race = race
        while race == "":
            race = random.choice(races)
            # print(race)
        self.alignment = alignment
        while alignment == "":
            alignment = random.choice(alignments)
            # print(alignment)
        self.class_ = class_
        while class_ == "":
            class_ = random.choice(classes)
            # print(class_)
    def character_stats(self):
        return "{} - {} - {} - {}".format(self.name, self.race, self.class_, self.alignment)

每个属性从列表中提取随机值。我的format语句是获取属性值而不是对象/属性的最新尝试。抱歉,如果有任何术语错误,对此非常新颖

python-3.x list class random
1个回答
0
投票

除了输入以外,您没有分配其他任何内容(在这种情况下,属性是一个空字符串""。在最小的示例中,您具有以下构造函数:

class Party:
    def __init__(self, name=""):
         self.name = name
         while name == "":
             name = random.choice(names)

names随机分配新名称后,应将其分配给self,否则,当__init__方法完成时,局部变量将超出范围。此代码段应工作:

class Party:
    def __init__(self, name=""):
        while name == "":
            name = random.choice(names)
        # Now we assign the local variable as 
        # an attribute
        self.name = name
© www.soinside.com 2019 - 2024. All rights reserved.