簡體   English   中英

如何打印構造函數的屬性?

[英]How to print attribute of constructor?

需要在構造函數中打印列表 Student Self.grades=[ ] 嘗試訪問空列表時打印出地址的 object

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)

class Grade:
    minimum_passing = 65
   
    def __init__(self, score):
        self.score = score
        


pieter = Student("pw", 10)

pieter.add_grade(Grade(100))

PS謝謝

添加grade.score

k.append(grade.score)

打印清單:

print(pieter.grades) # [100]

另請參見Python class 示例

如果您要列出 append 項目,那么您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]

您可以將此添加為學生中的方法

 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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM