init () отсутствует 1 обязательный позиционный аргумент
Я пытаюсь изучить 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()
4 ответов
вы получаете эту ошибку, потому что вы не прошли data
переменная конструктора DHT.
ответы айкида и Александра хороши, но это не сработает, потому что вам все равно нужно инициализировать self.data
в конструкторе класса, как это:
class DHT:
def __init__(self, data={}):
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()
ваш конструктор ожидает один параметр (данные). Ты не передашь его по телефону. Я думаю, вы хотели инициализировать поле в объекте. Это выглядело бы так:
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()