在PyDev中打印到控制台

2 投票
3 回答
7745 浏览
提问于 2025-04-17 15:37

我刚开始使用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的教程。

撰写回答