在PyDev中打印到控制台
我刚开始使用Eclipse里的PyDev。
在写简单程序的时候,我经常用print()这个命令来查看变量的值。我希望这些值能显示在控制台上,但到现在为止我还没有看到任何值在控制台里打印出来。
下面是一段简单的代码,来展示我想做的事情。
class MyClass(object):
def __init__(self):
myClassObject= MyClass()
myClassObject.greet()
def greet(self):
print("stackoverflow is the best !!!")
我期待在控制台上看到字符串“stackoverflow is the best !!!”,但是当我运行代码时,什么都没有显示。我该怎么办呢?
提前谢谢你们!
3 个回答
0
我刚刚了解到,我在问题中写的代码部分是没有意义的,因为我在 __init__(self)
里创建了对象。所以,实际上应该在 if __name__ == '__main__':
这个条件下来创建对象。
我写了一个完整的模块来演示这个问题。(注意,Classes.py 模块里有多个类,然后在代码的第二部分导入了这个模块)
'''
Classes.py
'''
class MyClass(object):
def greet(self):
print("Hello World")
class MyNextClass(object):
def greetAgain(self):
print("Hello again")
'''
MyMain.py
'''
import Classes
if __name__ == '__main__':
a=Classes.MyClass()
a.greet()
b=Classes.MyNextClass();
b.greetAgain()
上面的代码是有道理的,运行时会顺利输出到控制台。
0
__init__
是在创建类的实例时被调用的(可以参考 这个问题)。在你的代码片段最后加上 my_instance = MyClass()
,就会创建一个 MyClass
类的实例,并且应该会输出你想要的内容:
class MyClass(object):
def __init__(self):
print("stackoverflow is the best !!!")
my_instance = MyClass()
2
你还没有创建这个类的实例。为了让你现有的代码能输出结果,可以试试下面的方法:
if __name__ == '__main__':
instance = MyClass()
-- 修改后的代码 --
根据你重写的代码,你应该得到以下内容:
class MyClass(object):
def __init__(self):
#myClassObject= MyClass() # Causes recursion error.
#myClassObject.greet() # You should not be accessing your instance method this way
self.greet()
def greet(self):
print("stackoverflow is the best !!!")
if __name__ == '__main__':
instance = MyClass()
你的例子看起来有点复杂。建议你去看看Python中类的使用方法,可以参考Python 2.7或者Python 3.3的教程。