【问题标题】:print to console in PyDev在 PyDev 中打印到控制台
【发布时间】:2013-01-27 19:54:27
【问题描述】:

我是 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 !!!”,但是当我运行代码时,我什么也得不到。我该怎么办?

提前致谢

【问题讨论】:

  • 代码在调用时进行评估。
  • 好的,在我的问题中存在未实例化类对象的困惑,我修复了它。请注意,问题不在于初始化对象实例

标签: python eclipse console pydev


【解决方案1】:

您尚未实例化该类。为了从您所拥有的内容中产生输出,请尝试以下操作:

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.7Python 3.3 的类用法。

【讨论】:

  • if __name__ == '__main__': 在我使用 Module:main 时出现。但是在一个类中,我有 main 方法。 (即def __init__(self):)当我使用主模块时,一切正常,但是当我在 __init__(self) 中 print() 时出现问题。我实例化了一个对象,但控制台仍然是空白的。有什么想法吗?
【解决方案2】:

__init__ 在类被实例化时被调用(参见this question)。在你的 sn-p 末尾添加 my_instance = MyClass() 将创建一个 MyClass 类的实例,并且应该打印出你想要的:

class MyClass(object):

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

my_instance = MyClass()

【讨论】:

  • 你能print 任何东西吗?还是只是这个例子不起作用?
  • 我试过了,不幸的是它不起作用class MyClass(object): def __init__(self): my_class= MyClass() my_class.greet() def greet(self): print("Hello World")
  • 是的@mtth,那是我的担心,我无法打印任何东西
  • 没有格式和缩进,很难看到发生了什么。我添加了一个示例,这是您尝试过的吗?编辑 - 那么您的控制台似乎有问题,也许它会使打印语句静音。
  • 我注意到这个问题只有在我写一个类的时候才会出现。当我使用新的主 Module:main 时,它工作正常,控制台打印出 if __name__ == '__main__': 中写的任何内容
【解决方案3】:

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

上面的代码是有意义的,它会毫无问题地输出到控制台。

【讨论】:

    猜你喜欢
    • 2011-03-02
    • 2018-03-06
    • 2015-05-31
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多