【问题标题】:TypeError: main() takes exactly 1 argument (0 given)TypeError: main() 只需要 1 个参数(给定 0)
【发布时间】:2016-08-17 09:24:35
【问题描述】:

我正在尝试在 Python 2.7.11 的类文件中创建 main() 并运行它,但 Python 声称我需要传递 main() 一个参数。

def main(self):
    howManyBadCrops = BadCropsDetector() # My class
    # a bunch of stuff goes here that runs the module....

if __name__ == "__main__":
    main()

为什么会这样?这是我的终端输出:

Traceback (most recent call last):
  File "badCropsDetector.py", line 11, in <module>
    class BadCropsDetector:
  File "badCropsDetector.py", line 66, in BadCropDetector
    main()
TypeError: main() takes exactly 1 argument (0 given)

【问题讨论】:

  • 没有编译器,这不是java :)
  • 对不起。将删除术语,非常习惯于在 Java xD 中工作。
  • 我只是想让你意识到你是在用 Python 编写 Java 的(你谈到“编译器”,你在一个类中定义了 main 函数,并且想在不引用类的情况下调用它)。停止用 Java 思考,用 Python 编程会更容易
  • 确实是我的问题。作为初学者的 Python 程序员,很难从 Java 类中的 main 切换到 Python 类之外的 main。感谢您的区别。

标签: python python-2.7 main typeerror


【解决方案1】:

在这种情况下,您不需要main 的函数定义中的self 参数。这是因为main 显然是一个模块级函数,您只需要在编写包含在类中的函数(即方法)时指定self

只需将其从定义中删除:

def main():

【讨论】:

  • 感谢您的快速回复。删除了self 参数,只需将def main() 放在类之外,问题就解决了。
  • 我喜欢这个清晰简洁的答案。非常感谢!
  • 在我看来,从 python 的函数定义中删除 self 并不是最佳实践
猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 2019-03-24
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多