2016-04-23 3 views
0

Я пытаюсь создать main() в файле класса в Python 2.7.11 и запустить его, но Python утверждает, что мне нужно передать main() аргумент.ТипError: main() принимает ровно 1 аргумент (0 задано)

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) 
+1

Там не компилятор, это не ява :) –

+0

Извините. Удалит терминологию, очень привычную для работы в Java xD. – Jodo1992

+1

Я просто хотел, чтобы вы поняли, что программируете Java на Python (вы говорите о «компиляторах», вы определили функцию «main» внутри класса и хотели вызвать ее без ссылки на класс). Остановить мышление на Java и программирование на Python вам будет проще –

ответ

4

В этом контексте, вам не нужен self аргумент в определении функции от main. Это связано с тем, что main явно является функцией уровня модуля, вам нужно указать только self, когда вы пишете функцию, содержащуюся внутри класса (то есть метод ).

Просто удалите его из определения:

def main(): 
+0

Благодарим вас за быстрый ответ. Убрал аргумент 'self' и просто поместил' def main() 'вне класса, и проблема была исправлена. – Jodo1992

+0

запомнить и принять ответ @ Jodo1992 –

+0

Мне очень нравится этот ясный и лаконичный ответ. Большое спасибо! – Siyah

Смежные вопросы