2

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

提前致谢

4

3 回答 3

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.7Python 3.3

于 2013-02-12T13:40:48.167 回答
0

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

class MyClass(object):

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

my_instance = MyClass()
于 2013-02-12T13:43:54.307 回答
0

我刚刚了解到我在问题中的代码部分毫无意义,因为我已经在__init__(self). 所以必须在 a 中创建对象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()

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

于 2013-02-12T18:49:19.417 回答