类内的Python主调用
我没有做太多的python——来自C/Java背景——所以请原谅我问了这么一个简单的问题。我正在Eclipse中使用Pydev编写这个简单的程序,我只想让它执行我的主要功能:类内的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! 及 及 这些都
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.