我想将所有成绩打印为特定学生的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__中添加了它,但还是一样。
答案 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
类。