2013-02-12 163 views
2

我是Eclipse中PyDev的新手。 在編寫簡單程序時,我經常使用print()語句來跟蹤變量的值。我希望將這些值打印到控制檯,但到目前爲止,我無法在控制檯中獲得任何值。在PyDev中打印到控制檯

下面是一段簡單的代碼來演示我正在嘗試做什麼。

class MyClass(object): 

    def __init__(self): 

    myClassObject= MyClass() 
    myClassObject.greet() 


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

我期待看到字符串「計算器是最好的!」在控制檯,但是當我運行代碼,我什麼都得不到。我應該做些什麼?

在此先感謝

+0

代碼在您調用時進行評估。 – alinsoar 2013-02-12 13:46:18

+0

好的,在我的問題中出現了沒有實例化類對象的混淆,我解決了它。請注意,問題不在初始化對象實例 – 2013-02-12 14:13:42

回答

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的類使用情況。

+0

'if __name__ =='__main __':'在我使用Module:main時出現。但是在課堂上,我有主要的方法。 (即'def __init __(self):') 當我使用主模塊時,一切正常,但是當我在__init __(self)內部打印()時會出現問題。 我實例化一個對象,但仍然是控制檯是空白的。任何想法? – 2013-02-12 14:09:00

0

__init__在實例化類時調用(參見this question)。在你的代碼段的末尾添加my_instance = MyClass()將創建MyClass類的一個實例,應打印出你想要的東西:

class MyClass(object): 

    def __init__(self): 
    print("stackoverflow 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

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() 

上面的代碼有意義,它會輸出到控制檯,而不問題。