首页 > 解决方案 > E1120: 构造函数调用中的参数没有值

问题描述

我对 Python 类很陌生,我想测试一个简单的代码:

class information:
  def __init__(self,fname,lname):
    self.fname = fname
    self.lname = lname
  def first(self):
    print ("First name :", self.fname)
  def last(self):
    print ("Last name :",self.lname)
firstname = information("Name")
lastname = information("Test")

但是,Pylint 给了我一个错误:

E1120:No value for argument 'lname' in constructor call (11,13)
E1120:No value for argument 'lname' in constructor call (12,12)

这里有什么问题?我想我已将 lname 定义为“self.lname = lname”

标签: pythonclassooppylint

解决方案


__init__()期待两个位置参数,但给出了一个。

查看您的__init__()

def __init__(self,fname,lname):

您应该创建该类的对象并使用该对象来调用该类的函数,如下所示:

class information:

  def __init__(self,fname,lname):
    self.fname = fname
    self.lname = lname

  def first(self):
    print ("First name :", self.fname)

  def last(self):
    print ("Last name :",self.lname)

obj = information("Name", "Test")   # <-- see two arguments passed here.
firstname = obj.first()
lastname = obj.last()

# First name : Name
# Last name : Test

注意:当您创建一个类的对象时,会自动调用该类的构造函数。创建对象时传递的参数必须与构造函数中的参数数量相匹配。


推荐阅读