Python构造函数参数不断变化?

时间:2015-04-04 04:46:41

标签: python python-2.7

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

...

2 个答案:

答案 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)