Python构造函数参数不断变化



有人可能会解释这里发生了什么。我今天才开始使用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)

最新更新