类内的Python主调用

类内的Python主调用,python,pydev,Python,Pydev,我没有做太多的python——来自C/Java背景——所以请原谅我问了这么一个简单的问题。我正在Eclipse中使用Pydev编写这个简单的程序,我只想让它执行我的主要功能: class Example(): if __name__ == '__main__': Example().main() <----- What goes here? def main(self): print "Hello World! 及 及 这些都

我没有做太多的python——来自C/Java背景——所以请原谅我问了这么一个简单的问题。我正在Eclipse中使用Pydev编写这个简单的程序,我只想让它执行我的主要功能:

class Example():

if __name__ == '__main__':
    Example().main()        <----- What goes here?


    def main(self):     
        print "Hello World!


这些都不管用。我错过了什么

整个区块都放错地方了

class Example(object):
    def main(self):     
        print "Hello World!"

if __name__ == '__main__':
    Example().main()

但是您真的不应该使用类。

首先,您需要实际定义一个函数,然后才能运行它(不需要调用
main
)。例如:

class Example(object):
    def run(self):
        print "Hello, world!"

if __name__ == '__main__':
    Example().run()
但是,您不需要使用类-如果您只想运行一些代码,只需将其放入函数并调用该函数,或者只需将其放入
if
块:

def main():
    print "Hello, world!"

if __name__ == '__main__':
    main()


记住,你是不允许这样做的

class foo():
    def print_hello(self):
        print("Hello")       # This next line will produce an ERROR!
    self.print_hello()       # <---- it calls a class function, inside a class,
                             # but outside a class function. Not allowed.
class foo():
def print_你好(自我):
打印(“你好”)#下一行将产生错误!

self.print_hello()#谢谢!我认为我需要使用类来组织我的所有代码,因为这是一个更大项目的一部分。但我不太确定——类在Python中并不常用,是吗?@vegansmarties类在Python中使用得足够频繁。但是类是构建程序的一种方式,它有很多语义包袱。如果您只需要组织和名称空间,那么只需使用模块,IMHO。Java坚持“一切都必须是一个类的一部分”的观点延伸到将事物变成与它们毫不相似的类,这总是让我有点恼火。我认为我需要类来显示层次结构和继承结构,对吗?是的,但也要考虑你是否真的需要继承。(答案很可能是肯定的,这很好——但也可能是否定的。请记住这一点。)为了运行单个方法而实例化一次的类不是类。尤其是当类不需要参数来实例化它时。哦,这个类中还有很多方法。我只是没有把它们包括在这里。这个类是提供了一个被程序的其他部分使用的接口,还是它自己在实现
main
时使用了其他方法?如果是,这表明
main
不属于此类。如果不是,这就意味着你并没有真正把这个类当作一个类来使用。是的,这个类描述了这个程序的用户界面,所以其他部分都依赖于它。启动UI是程序执行过程中发生的第一件事,这就是主方法存在的原因。你能把它放在一个单独的模块/类中吗?我通常在模块范围内有一个
main
函数。它调用其他代码,或创建初始对象。没有调用它,它也不会像普通类的方法那样操纵任何“内部状态”。但也许您所做的更适合您的用例;很难说没有看到你的代码。只要不要盲目地在Python中使用Java的
main
方法习惯用法,如果它实际上对您没有帮助的话!我发现
main
通常更像一个过程,而不是一个方法。
class Example(object):
    def run(self):
        print "Hello, world!"

if __name__ == '__main__':
    Example().run()
def main():
    print "Hello, world!"

if __name__ == '__main__':
    main()
if __name__ == '__main__':
    print "Hello, world!"
class foo():
    def print_hello(self):
        print("Hello")       # This next line will produce an ERROR!
    self.print_hello()       # <---- it calls a class function, inside a class,
                             # but outside a class function. Not allowed.