【问题标题】:How to display a list as a string in a class Python?如何在 Python 类中将列表显示为字符串?
【发布时间】:2018-07-21 03:43:03
【问题描述】:

到目前为止,我有以下代码。我想将 unit1 信息显示为字符串,但 prereq 详细信息存储在列表中,我不太清楚为什么它是空白而不是显示数学,Python

class The_Unit:

def __init__(self,code,name,prereq=[]):
    self.code = code
    self.name = name
    self.prereq =[]

def __repr__(self):
    return self.__str__()

def __str__(self):
    return  'Code: ' + self.code + \
            '\nName: ' + self.name + \
             '\nprerequisites: ' + '\n'.join((str(x) for x in self.prereq))





unit1 = The_Unit('11','coding',['math','python'])

print(unit1)
Code: 11
Name: coding
prerequisites: 

【问题讨论】:

  • 可能是因为您从未分配过它们? self.prereq =[]
  • 顺便说一句,str(self.prereq) 工作正常,不清楚为什么当你加入换行符时你期望逗号加入输出......另外,stackoverflow.com/questions/1132941/…
  • 我还想补充一点,不建议使用可变值作为默认值,例如 prereq = [],这可能会导致意外错误。使用prereq = None并在函数内部处理。

标签: python string list class


【解决方案1】:

首先,您需要将传递的prereq 分配给您的类变量。其次,使用.format() 语句将有助于格式化如下:

class The_Unit:
    def __init__(self, code, name, prereq=[]):
        self.code = code
        self.name = name
        self.prereq = prereq

    def __repr__(self):
        return self.__str__()

    def __str__(self):
        return  'Code: {}\nName: {}\nprerequisites: {}'.format(self.code, self.name, ', '.join(self.prereq))

unit1 = The_Unit('11', 'coding', ['math', 'python'])

print(unit1)

这将打印:

Code: 11
Name: coding
prerequisites: math, python

【讨论】:

    【解决方案2】:

    您将一个空列表分配给self.prereq。参数是prereq 所以你需要:

    self.prereq = prereq
    

    prereq = []表示调用函数时可以省略参数,那么self.prereq会是一个空列表。

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      相关资源
      最近更新 更多