2

私はEclipseのPyDevの初心者です。単純なプログラムをコーディングするときは、変数の値を追跡するために定期的にprint()ステートメントを使用します。これらの値をコンソールに出力したいのですが、これまでコンソールに値を出力できませんでした。

これが私がやろうとしていることを示すための簡単なコードです。

class MyClass(object):

  def __init__(self):

    myClassObject= MyClass()
    myClassObject.greet()


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

コンソールに「 stackoverflowisthebest !!! 」という文字列が表示されることを期待していますが、コードを実行しても何も表示されません。私はどうしたらいいですか?

前もって感謝します

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

あなたの例は非常に複雑に見えます。Python2.7またはPython3.3のPythonでのクラスの使用法を確認することをお勧めします。

于 2013-02-12T13:40:48.167 に答える
0

__init__クラスがインスタンス化されるときに呼び出されます(この質問を参照)。スニペットの最後に追加する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)。したがって、オブジェクトは代わりに内部で作成する必要がありますif __name__ == '__main__':

これを実証するための完全なモジュールを作成しました。(Classes.pyモジュールに複数のクラスがあり、コードの2番目の部分にインポートされていることを確認してください)

'''
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 に答える