我正在努力学习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()
答案 0 :(得分:4)
您收到此错误是因为您没有将data
变量传递给DHT构造函数。
aIKid和亚历山大的答案很好,但它不会起作用,因为你仍然必须在类构造函数中初始化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()
答案 1 :(得分: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)
答案 2 :(得分:1)
您需要将一些数据传递给它。例如,一本空字典。
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
将打印您刚刚输入的数据。
答案 3 :(得分:1)
您应该使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()
答案 4 :(得分:0)
问题出在你身上
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()
答案 5 :(得分:0)
如果错误类似 Author = models.ForeignKey(User,related_names ='blog_posts') TypeError:初始化()缺少1个必需的位置参数:'on_delete'
然后解决方案将是这样,您必须添加一个参数 Author = models.ForeignKey(User,related_names ='blog_posts',on_delete = models.DO_NOTHING)