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()
コンストラクターには1つのパラメーター(データ)が必要です。あなたは呼び出しでそれを渡していない。オブジェクトのフィールドを初期化したかったのではないでしょうか。次のようになります。
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)
データを渡す必要があります。たとえば、空の辞書。
if __name__ == '__main__': DHT('a').showData()
ただし、この例ではパラメーターは不要です。次の方法で宣言できます。
def __init__(self):
たぶん、データから設定するつもりですか?
class DHT:
def __init__(self, data):
self.data['one'] = data['one']
self.data['two'] = data['two']
self.data['three'] = data['three']
def showData(self):
print(self.data)
if __name__ == '__main__': DHT({'one':2, 'two':4, 'three':5}).showData()
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()
問題はあなたです
def __init__(self, data):
dHTクラスからオブジェクトを作成する場合、パラメーターを渡す必要があります。データはdict型である必要があります。
data={'one':1,'two':2,'three':3}
dhtObj=DHT(data)
ただし、コードで変更する必要があるのは
data={'one':1,'two':2,'three':3}
if __name__ == '__main__': DHT(data).showData()
または
if __name__ == '__main__': DHT({'one':1,'two':2,'three':3}).showData()