Python 语法中的 Java 主类
这是一个包含主方法的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的东西了。