__init_;()缺少1个必需的位置参数

2024-06-09 07:19:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习Python。这是一个非常简单的代码。这里我要做的就是调用类的构造函数。在那里初始化一些变量并打印该变量。但这给了我一个错误。它说:

missing 1 required positional argument

这是我的密码:

class DHT:
    def __init__(self, data):
        self.data['one'] = '1'
        self.data['two'] = '2'
        self.data['three'] = '3'
    def showData(self):
        print(self.data)

if __name__ == '__main__': DHT().showData()

Tags: 代码self密码datainitdef错误required
3条回答

构造函数需要一个参数(数据)。你不能在电话里传递它。我猜您想初始化对象中的字段。看起来是这样的:

class DHT:
    def __init__(self):
        self.data = {}
        self.data['one'] = '1'
        self.data['two'] = '2'
        self.data['three'] = '3'
    def showData(self):
        print(self.data)

if __name__ == '__main__':
    DHT().showData()

甚至只是:

class DHT:
    def __init__(self):
        self.data = {'one': '1', 'two': '2', 'three': '3'}
    def showData(self):
        print(self.data)

您收到此错误是因为未将data变量传递给DHT构造函数

aIKid和Alexander的答案很好,但它不起作用,因为您仍然必须在类构造函数中初始化self.data,如下所示:

class DHT:
   def __init__(self, data=None):
      if data is None:
         data = {}
      else:
         self.data = data
      self.data['one'] = '1'
      self.data['two'] = '2'
      self.data['three'] = '3'
   def showData(self):
      print(self.data)

然后调用showData方法,如下所示:

DHT().showData()

或者像这样:

DHT({'six':6,'seven':'7'}).showData()

或者像这样:

# Build the class first
dht = DHT({'six':6,'seven':'7'})
# The call whatever method you want (In our case only 1 method available)
dht.showData()

您可能应该使data成为默认值为空字典的关键字参数:

class DHT:
    def __init__(self, data=dict()):
        self.data['one'] = '1'
        self.data['two'] = '2'
        self.data['three'] = '3'
    def showData(self):
        print(self.data)

if __name__ == '__main__': 
    DHT().showData()

相关问题 更多 >