有人可能会解释这里发生了什么。我今天才开始使用python,我的类的构造函数似乎在做一些奇怪的事情。这是我的构造函数:
def __init__(self, studentid, fname, lname, gpa):
self.studentid = studentid
self.fname = fname
self.lname = lname
self.gpa = gpa
当我呼叫时
student = Student(1, 2, 3, 4, 5)
它抛出一个错误:TypeError:init()正好接受5个参数(给定6个)
但当我打电话给时
student = Student(1, 2, 3, 4)
它抛出以下错误:TypeError:init()正好接受5个参数(给定8个)
这肯定有5个参数
def __init__(self, studentid, fname, lname, gpa):
初始化学生的正确调用是
student = Student(1, 2, 3, 4)
self
是隐式传递的(因为对象被该阶段绑定)。这使总数达到5。
您的另一个错误不会来自此class
。仔细阅读回溯(或将其张贴在你的问题中),看看关于8个参数的错误实际上来自哪里。
self
由python隐式传递。为了可读性,建议在调用方法和函数时传递keyword arguments
。
student = Student(studentid=1, fname='John', lname='Doe', gpa=4)
。