2016-08-10 2 views
0

Я все еще в фазе обучения, и у меня есть этот вопрос.Разница между методами __main__ и launch()

Так что для того, чтобы выполнить класс, мы используем if __name__ == '__main__': и вызвать класс как следующий

class Example(): 
    def test(self): 
     print "Hello There" 

if __name__ == '__main__': 
    Example() 

Однако, я видел некоторые классы, которые используют def launch(): вместо if __name__ == '__main__':, поэтому вопрос здесь: Похожи ли они так что я могу оба способа или def launch(): имеет специальное предложение?

спасибо.

+2

нет такой вещи, как запуск в python, он должен был объявить имя функции так же, как вы объявили 'def test()'. Ничего больше. – harshil9968

+0

Я предполагаю, что в вашем учебнике они создали функцию «запуск» и вызвали класс изнутри тела функции для ее выполнения? – Harrison

+0

Или был «запуск» только другой функции в классе? – Harrison

ответ

-1

Python запускает что-либо на верхнем уровне, поэтому мы используем классы и функции для разделения заданий (среди других причин).

Так, например, здесь

Script a.py

def main(): 
    pass 

main() 

интерпретатор будет определять функцию с именем main(), но когда она достигает main() вызова на верхнем уровне (выравнивается по левому краю большинство) он будет выполнять основная функция.

Теперь в случае вашего launch()

if __name__ == '__main__': 
    Example() 

против

__name__ = __main__ 

Это используется в том случае, когда кто-то хочет, чтобы импортировать программу или класс, но не хочет, чтобы его запустить, когда интерпретатор сталкивается с этим.

Импорт будет вызывать main() в тот момент времени и однако скажем b.py структурно похожи, но вместо main() имеет __name__ = __main__, b.py не будет работать, если прямо не называется.

Причина, по которой я это делаю, заключается в том, что, как указал @ harshil9968, у Python нет метода «запуска». Что, вероятно, происходит, они определили launch() метод вместо main()

Затем поместите его под класс

class A(): 
    def launch(self): 
     #actions 

if __name__ == '__main__': 
    A() 

Призыв к A()launch() вызывает метод в A класса.

+0

Большое спасибо. Хорошо объяснено :) – Alli

+0

Вызов 'A' не вызывает' launch() '. Почему это должно быть? – BlackJack

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