有人可能能够解释这里发生了什么。我今天才开始使用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个)
...
答案 0 :(得分:3)
这肯定有5个参数
def __init__(self, studentid, fname, lname, gpa):
初始化学生的正确调用是
student = Student(1, 2, 3, 4)
隐式传递 self
(因为该对象受该阶段约束)。这使总数达到5。
您的其他错误不会来自此class
。仔细阅读回溯(或在你的问题中发布)以查看有关8个参数的错误实际来自哪里。
答案 1 :(得分:2)
self
由python隐式传递。为了便于阅读,建议在调用方法和函数时传递keyword arguments
。
student = Student(studentid=1, fname='John', lname='Doe', gpa=4)
。