Основной класс Java в Python-синтаксисе - PullRequest
0 голосов
/ 24 июня 2011

это пример Java Class с методом main.

public class MyMainClass{
    public static void main(){
        doThings();
    }
}

Чтобы запустить его, я должен выполнить «javac» для него, а затем «java» для его вывода.

В последнее время я довольно много экспериментировал с python, но я не мог понять, как структурировать мой py-документ, чтобы он функционировал точно так же, как Java-класс с основной функцией. Например, я пытался кодировать Python так:

class MyClass:
    def method(self):
        print("in main")

def main():
    mc = MyClass()
    mc.method()

if __name__ == "__main__":
    main()

Но это не работает. Вывод, который я получаю при запуске интерпретатора:

   C:\Users\altug>python MyClass.py
   Traceback (most recent call last):
   File "MyClass.py", line 9, in <module>
   main()
   NameError: name 'main' is not defined

Что-то не так с отступом, или я допускаю даже логические ошибки от моего имени. Может ли кто-нибудь помочь мне написать основной Python-класс, который выглядит точно так же, как класс Java?

Ответы [ 3 ]

3 голосов
/ 24 июня 2011

Почему бы и нет ...

class MyClass:
    def method(self):
        print("in main")

if __name__ == "__main__":
    MyClass().method()

Это самая близкая вещь к Java, которую вы здесь получите.

2 голосов
/ 24 июня 2011

Мне кажется, нормально:

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class MyClass:
...     def method(self):
...         print("in main")
... 
>>> def main():
...     mc = MyClass()
...     mc.method()
... 
>>> if __name__ == "__main__":
...     main()
... 
in main

В чем проблема, которую вы испытываете?

Или вы ищете что-то вроде следующего?

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class MyClass:
...     @staticmethod
...     def main():
...         print("in main")
... 
>>> if __name__ == "__main__":
...     MyClass.main()
... 
in main
0 голосов
/ 24 июня 2011

Python-эквивалент вашего Java-класса с основным методом будет:

class MyClass:
    def main(self):
        print("in main")
        doThings()

Вы создаете экземпляр и вызываете его метод:

mc = MyClass()
mc.main()

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

...