如果您将项目附加到列表,那么您需要for-loop 来显示列表中所有元素的属性
for item in pieter.grades:
print(item.score)
它会在新行中打印每个分数
pieter.add_grade(Grade(100))
pieter.add_grade(Grade(16))
pieter.add_grade(Grade(56))
for item in pieter.grades:
print(item.score)
100
16
56
如果您使用列表推导,那么您可以将其转换为列表
scores = [ item.score for item in pieter.grades ]
print(scores)
它会显示为列表
pieter.add_grade(Grade(100))
pieter.add_grade(Grade(16))
pieter.add_grade(Grade(56))
print([ item.score for item in pieter.grades ])
[100, 16, 56]
你可以在 Student 中添加这个方法
def get_scores(self):
return [ item.score for item in self.grades ]
并用作
for item in pieter.get_scores():
print(item) # without .score
print(pieter.get_scores())
完整代码
class Student:
def __init__(self, name, year):
self.name = name
self.year = year
self.grades = [] # how to print this
def add_grade(self, grade):
if type(grade) is Grade:
k = self.grades
k.append(grade)
def get_scores(self):
return [ item.score for item in self.grades ]
class Grade:
minimum_passing = 65
def __init__(self, score):
self.score = score
pieter = Student("pw", 10)
pieter.add_grade(Grade(100))
pieter.add_grade(Grade(16))
pieter.add_grade(Grade(56))
for item in pieter.grades:
print(item.score)
print([ item.score for item in pieter.grades ])
for item in pieter.get_scores():
print(item)
print(pieter.get_scores())