因此,我正在阅读一篇关于使用Python编程的介绍,并做一些练习,以供我自己借鉴。我正在学习自定义类,其中有一部分说:“程序应该使用一个名为Quizzes的类,它有一个实例变量来保存六个等级的列表……”因此我尝试了以下方法:
class Quizzes:
def __init__(self, grade1=0):
self._grade1 = grade1
def setGrade1(self, grade1):
self._grade1 = grade1
def getGrade1(self):
return self._grade1
def grades(self):
return []
def gradeInsert(self, a=grades()):
a.append(self._grade1)
在本例中,我得到“TypeError:grades()缺少1个必需的位置参数:‘self’。你知道吗
我也试过:
def __init__(self, grade1=0, grades=[]):
self._grade1 = grade1
self._grades = grades
def setGrade1(self):
self._grade1 = grade1
def setGrades(self):
self._grades = [self.getGrade1()]
def getGrades(self):
return self._grades
但我得到了一个空白[]。我在初始化中对grades=[]所做的任何修改都会反映在getGrades调用中。那我怎么才能真正设定好成绩呢?还是我完全偏离了目标?你知道吗
实例变量应该在
__init__
内部初始化在第一个示例中,您尝试调用
grades()
,它是Quizzes
类的成员函数。成员函数期望实例作为第一个参数,或者在点(the_instance.grades()
)之前,或者作为(不太常见的)显式参数(grades(the_instance)
)。两者都不提供,因此Python会抱怨。你知道吗在您的第二个示例中,不清楚在定义类之后您实际做了什么。你知道吗
一般来说,这两门课与练习没有太大关系,可以通过以下方法解决:
顺便说一句:不建议使用可变对象作为默认参数,因为该对象在所有调用之间是共享的。你知道吗
相关问题 更多 >
编程相关推荐