简体   繁体   English

实现类时的Python错误

[英]Python error when implementing class

class DetailedScore(Score):
'''A subclass of Score adding level'''

    def __init__(self, points, initials, level):
        '''
        (Score, int, str, int) -> NoneType

        Create a score including number of points, initials, and level.
        '''

        super().__init__(points, initials)
        self.level = level

    def __str__(self):
        '''
        Return a string representation of DetailedScore formated:

        'The student with initials 'KTH' scored 100 points, the student is in level 10'
        '''

        score_str = super().__str__()

        return '{}, the student is in level {}'.format(score_str, self.level)

    def __repr__(self):
        '''
        Return a string representation of DetailedScore formated:

        'DetailedScore(100, 'KTH', 10)'
        '''

        return 'DetailedScore({}, {}, {})'.format(self.points, self.initials, self.level)

score5 = DetailedScore(1000, 'JQP', 100)
score6 = DetailedScore(999, 'ABC', 99)
score7 = DetailedScore(999, 'BBB', 15)
score8 = DetailedScore(1, 'KTH', 12)

I am trying to finish this class, and am not sure why I keep getting an error when trying to build. 我正在尝试完成本课程,并且不确定在尝试构建时为什么会不断出错。

This is the error: 这是错误:

Traceback (most recent call last):
  File "/Users/KoryHershock/Documents/Python/[Kory_Hershock]_final.py", line 187, in <module>
    score5 = DetailedScore(1000, 'JQP', 100)
  File "/Users/KoryHershock/Documents/Python/[Kory_Hershock]_final.py", line 162, in __init__
    super().__init__(points, initials)
TypeError: super() takes at least 1 argument (0 given)
[Finished in 0.1s with exit code 1]

If you're using Python 2, you must write super(DetailedScore, self) , not super() . 如果您使用的是Python 2,则必须编写super(DetailedScore, self) ,而不要编写super()

It is Python 3 that also allows the no-argument form with the compiler inserting the appropriate class object taken from lexical context. 正是Python 3允许无参数形式的编译器插入从词法上下文中获取的适当的类对象。

super().__whatever__()更改为super(Score, self).__whatever__()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM