【问题标题】:TypeError: main() missing 1 required positional argument: 'self'类型错误:main() 缺少 1 个必需的位置参数:'self'
【发布时间】:2020-05-07 10:49:06
【问题描述】:

我的代码和错误如下,我试图了解为什么会出现错误以及如何修复它。我在没有 self 的情况下尝试了这个并得到了另一个错误

TypeError: load_data() takes 0 positional arguments but 1 was given. 
def main(self):

    training_loader, validation_loader, testing_loader = Utilities3.load_data(data)
    model, optimizer, criterion = Utilities3.network_construct(structure, drop, hidden_layer, learningrate, device)
    Utilities3.do_deep_learning(model, optimizer, criterion, epochs, 40, training_loader, device)
    Utilities3.save_checkpoint(model, path, structure, hidden_layer, drop, learningrate)
    print("Training is finish")


if __name__== "__main__":
    main()
TypeError                                 Traceback (most recent call last)
<ipython-input-25-77e46aea71ac> in <module>()
     49 
     50 if __name__== "__main__":
---> 51     main()

TypeError: main() missing 1 required positional argument: 'self'

【问题讨论】:

  • 您将main 定义为有一个参数self,但在没有任何参数的情况下调用它:main()。你提到的第二个错误是Utilities3.load_data(我们看不到它的定义)显然没有接受任何位置参数,但你正在传递一个。您需要将参数传递给他们期望的函数!
  • 您是否从类中删除了一个方法,现在尝试将其用作函数?
  • 你必须在 main(self) 函数中将参数传递给 self

标签: python


【解决方案1】:

您的函数main 接受参数self,但在您的执行中,main(),您没有传入任何参数。

首先,self 用于面向对象的编程中,当您有一个具有属性和方法的类时。但这不是你在这里所拥有的。而且,你似乎根本没有在函数中使用self,那你为什么要把它作为参数呢?

改为这样做:


def main():

    training_loader, validation_loader, testing_loader = Utilities3.load_data(data)
    model, optimizer, criterion = Utilities3.network_construct(structure, drop, hidden_layer, learningrate, device)
    Utilities3.do_deep_learning(model, optimizer, criterion, epochs, 40, training_loader, device)
    Utilities3.save_checkpoint(model, path, structure, hidden_layer, drop, learningrate)
    print("Training is finish")


if __name__== "__main__":
    main()

【讨论】:

  • 谢谢伙计。是的,我试图解决这个问题,并认为添加“自我”会有所帮助。因为当我删除它时,我得到了错误并且我没有理解错误的实际含义。 TypeError: load_data() 接受 0 个位置参数,但给定了 1 >": ---> 51 main()
  • in main() 41 def main(): 42 ---> 43 training_loader, validation_loader, testing_loader = Utilities3.load_data(data) 44 模型,优化器,标准 = Utilities3.network_construct(structure, drop, hidden_​​layer, learningrate, device) 45 Utilities3.do_deep_learning(model, optimizer, criteria, epochs, 40, training_loader, device) TypeError: load_data() 采用 0 个位置参数,但给出了 1 个跨度>
猜你喜欢
  • 2022-01-03
  • 2021-07-14
  • 2015-07-13
  • 2019-10-02
  • 2017-06-24
  • 2016-05-27
  • 2017-08-21
  • 2021-09-21
  • 2020-11-10
相关资源
最近更新 更多