1. ホーム
  2. python

[解決済み] __init__() に必要な位置の引数が 1 つ不足している

2022-02-05 15:08:26

質問

私はPythonを学ぼうとしています。これは本当に簡単なコードです。私がここでやろうとしていることは、クラスのコンストラクタを呼び出すことだけです。そこでいくつかの変数を初期化し、その変数を表示します。しかし、それは私にエラーを与えています。それは言っています。

1つの必須位置引数がありません

以下は私のコードです。

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()

解決方法は?

このエラーは 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()