Python 语法中的 Java 主类

0 投票
3 回答
1256 浏览
提问于 2025-04-16 20:12

这是一个包含主方法的Java类的例子。

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

要运行它,我需要先用“javac”编译它,然后再用“java”来执行生成的文件。

最近我在尝试使用Python,但我搞不清楚怎么把我的Python文档结构弄得像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 个回答

0

在Python中,相当于你Java里的带有main方法的类可以这样写:

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

你需要创建一个实例,然后调用它的方法:

mc = MyClass()
mc.main()

我觉得你可能有点困惑,因为你在程序里用了一个main()函数,这个其实不是必须的,但这样做是个好习惯。不过你的代码看起来没问题。

2

在我看来,这样没问题:

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
3

为什么不这样做呢...

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

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

这就是你在这里能找到的最接近Java的东西了。

撰写回答