[英]Why is this multi-value data structure not working?
我正在學習 Python 數據結構,並且正在查看這段代碼:
class Student:
firstname=""
lastname=""
grade="U"
list=[]
student=Student()#create the student
student.firstname=str(input("Input student first name: "))
list.append(student.firstname)
student.lastname=str(input("Input student last name: "))
list.append(student.lastname)
student.grade=str(input("Input student grade: "))
list.append(student.grade)
#print the student data
print("First Name: " + student.firstname)
print("Last Name: " + student.lastname)
print("Grade: " + student.grade)
在第一次輸入student.firstname
之后,它只是說有一個錯誤( TypeError: descriptor 'append' for 'list' objects doesn't apply to a 'str' object
)
怎么了? 我以為代碼只會將名字添加到列表的末尾,對嗎?
名稱list
指的是內置類型。 list.append
是該類型的未綁定方法,與與 class Student
關聯的名為list
的 class 屬性無關。
如果您將適當的列表作為第一個參數傳遞,它將“起作用”(由於我不會在這里討論的原因)
list.append(student.list, student.firstname)
但是除了應該首先定義屬性的__init__
方法之外,您實際上應該為 class 定義其他方法。
class Student:
def __init__(self, firstname, lastname, grade):
self.firstname = firstname
self.lastname = lastname
self.grade = "U"
x = input("Input student first name: ")
y = input("Input student last name: ")
z = input("Input student grade: ")
student = Student(x, y, z)
print("First Name: " + student.firstname)
print("Last Name: " + student.lastname)
print("Grade: " + student.grade)
無論如何,尚不清楚該列表的目的是什么。 你想保留Student
的實例列表嗎? 在 class 之外執行此操作。例如,
students = []
student = Student("John", "Doe", "U")
students.append(student)
list=[]
和list.append(student.firstname)
是一個問題: list
is a type
, not an appropriate object name
我建議回到基礎並實施:
def __init__(self, first, last, grade)
創建您的 class 個實例__str__(self)
的定義來定義如何print()
你的對象list
,例如allStudents = []
allStudents.append(Student(first, last, grade))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.