如何将字符串作为参数打印为字符串,该参数是python中类的列表

时间:2018-12-15 01:28:37

标签: python list class printing

我想将所有成绩打印为特定学生的csv字符串。我如何实现此目的,因为它会打印出内存位置:

class Student:
  def __init__(self,name,year):
    self.name = name
    self.year = year
    self.grades = []
    def add_grade(self,grade):
      if type(grade) == Grade:
        self.grades.append(grade)
      else:
        pass
    def __repr__(self):
      return "Student name is {name} and attends year {year}".format(name=self.name, year=self.year)

pieter = Student("Pieter Bruegel the Elder",8)

class Grade:
  minimum_passing = 65
  def __init__(self,score):
    self.score = score


pieter.add_grade(Grade(100))
pieter.add_grade(Grade(95))
pieter.add_grade(Grade(85))
print(str(pieter.grades)) #this one prints [<__main__.Grade object at 0x7fc3874d76d8>]
print(pieter)

我还在__repr__中添加了它,但还是一样。

1 个答案:

答案 0 :(得分:1)

Grade一个__str__方法,该方法将分数作为字符串返回。

class Grade:
  minimum_passing = 65
  def __init__(self,score):
    self.score = score
  def __str__(self):
    return str(self.score)

然后print(pieter.grades)应打印:

[100,95,85]

您无法摆脱周围的[],因为这是列表打印的方式。您无法通过其中的元素自定义容器的打印。如果需要这样做,则应该定义自己的GradeList类。