私はこれを理解するのが難しいです。私はコースと呼ばれる2つのクラスとトランスクリプトと呼ばれる2つのクラスを作成しました。他のクラスの属性がリストに追加されて印刷されない
私は、 "add_course"と呼ばれるTranscriptクラスのメソッドを持っています。それは、 "self.courses"として設定された "courses"というコースリストにそれに与えられたコースを追加することになっています。
問題は、いくつかのテストコースを追加した後にTranscriptクラスを印刷すると、何も追加されずに「Transcript:」だけが印刷されることです。
class Course:
def __init__(self, number, credit, grade):
#validgrades = ['A','B','C','D','F','IP']
#if grade not in validgrades:
#raise CourseError("bad grade" + "'" + grade + "'")
self.number = number #string
self.credit = credit #int
self.grade = grade #string
def __str__(self):
return ('%s: credit %d, grade %s' % (self.number, self.credit, self.grade))
def __eq__(self,other):
return self.number==other.number and self.credit==other.credit and self.grade==other.grade
def is_passing(self):
if self.grade == 'F' or self.grade == 'IP':
return False
else:
return True
c1 = Course("CS112",4,"A")
print(c1)
print(c1.is_passing())
c2 = Course("ENGH101", 3, "B")
print(c1==c2)
c3 = Course("MATH113", 4, "IP")
class Transcript:
def __init__(self):
courses = []
self.courses = courses
def __str__(self):
strtrans=""
strtrans +='Transcript:\n'
for i in self.courses:
strtrans+= '%s\n\t' %(i)
return strtrans
def __eq__(self,other):
if self.courses == other.courses:
return True
else:
return False
def add_course(self,course):
for i in self.courses:
self.courses.append(course)
def course_by_number(self, number):
for i.number in self.courses:
if self.number == number:
print('It worked!')
return True
elif self.number == None:
return None
else:
return False
t=Transcript()
print(t)
t.add_course(c1)
t.add_course(c2)
t.add_course(c3)
print(t)
出力は次のようになります。
CS112:クレジット4、グレード
真
偽
トランスクリプト:
トランスクリプト:
、それは次のようになります。
トランスクリプト:
CS112:クレジット4、グレード
ENGH101:クレジット3、グレードB
MATH113:クレジット4、等級IP
あなたの問題はおそらくここにあります。 'self.course = self.courses.append(course)'あなたは 'self.course =' appendを必要とせず、リストを変更します。それは追加せずに返します – Nullman
私はその部分を削除し、それでも何も印刷しません。 – ruckarucka