【问题标题】:How to print attribute of constructor?如何打印构造函数的属性?
【发布时间】:2021-05-02 18:09:35
【问题描述】:

需要在构造函数Student Self.grades=[]空列表中打印列表 尝试访问时会打印出地址对象

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 谢谢

【问题讨论】:

    标签: python python-3.x class


    【解决方案1】:

    如果您将项目附加到列表,那么您需要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())
    

    【讨论】:

      【解决方案2】:

      添加grade.score:

      k.append(grade.score)
      

      打印列表:

      print(pieter.grades) # [100]
      

      另见Python class examples

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-17
        • 2022-12-16
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        相关资源
        最近更新 更多