Как вывести в виде строки параметр, представляющий собой список из класса в Python - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу напечатать все оценки в виде строки 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 голосов
/ 15 декабря 2018

Give Grade a __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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...