在PyDev中打印到控制台

问题描述:

我是Eclipse中PyDev的新手。 在编写简单程序时,我经常使用print()语句来跟踪变量的值。我希望将这些值打印到控制台,但到目前为止,我无法在控制台中获得任何值。在PyDev中打印到控制台

下面是一段简单的代码来演示我正在尝试做什么。

class MyClass(object): 

    def __init__(self): 

    myClassObject= MyClass() 
    myClassObject.greet() 


    def greet(self): 
     print("* is the best !!!") 

我期待看到字符串“计算器是最好的!”在控制台,但是当我运行代码,我什么都得不到。我应该做些什么?

在此先感谢

+0

代码在您调用时进行评估。 – alinsoar 2013-02-12 13:46:18

+0

好的,在我的问题中出现了没有实例化类对象的混淆,我解决了它。请注意,问题不在初始化对象实例 – 2013-02-12 14:13:42

您尚未实例化类。为了从你有尝试以下所产的输出:

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("* is the best !!!") 

if __name__ == '__main__': 
    instance = MyClass() 

您的示例似乎过于复杂。你最好在Python中查看Python 2.7Python 3.3的类使用情况。

+0

'if __name__ =='__main __':'在我使用Module:main时出现。但是在课堂上,我有主要的方法。 (即'def __init __(self):') 当我使用主模块时,一切正常,但是当我在__init __(self)内部打印()时会出现问题。 我实例化一个对象,但仍然是控制台是空白的。任何想法? – 2013-02-12 14:09:00

__init__在实例化类时调用(参见this question)。在你的代码段的末尾添加my_instance = MyClass()将创建MyClass类的一个实例,应打印出你想要的东西:

class MyClass(object): 

    def __init__(self): 
    print("* is the best !!!") 

my_instance = MyClass() 
+0

你能“打印”任何东西吗?还是仅仅这个例子不起作用? – mtth 2013-02-12 13:54:08

+0

好我试过了,遗憾的是它不工作 'MyClass类(对象): 高清__init __(个体经营): my_class = MyClass的() my_class。迎接() 高清迎接(个体经营): 打印(的“Hello World”) ' – 2013-02-12 13:55:55

+0

是@mtth,这是我担心的,我无法打印任何东西 – 2013-02-12 13:57:03

我刚刚了解到,这个问题我的代码部分是毫无意义的,因为我已经实例化对象__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() 

上面的代码有意义,它会输出到控制台,而不问题。