2017-12-07 19 views
-1

___init____にいくつかの変数が設定されたクラスを作成しました。これらの変数をそのクラスのメソッドから変更できるようにしたいと思います。クラスのメソッドからインスタンス変数を変更する

class example_class: 

    def __init__(self, variable): 
     self.thing = 'variable' 

    def example_method(self): 
     self.thing = 'changed text' 

    def different_method(self): 
     print(self.thing) 

だから「example_method」を呼び出す前にself.thingの値は、文字列「変数」、その後、今self.thing方法「example_method」に等しい呼び出した後に「変更テキスト」です。これは可能でなければなりませんが、私はそれを行う方法を理解していません

+0

あなたが実際にあなたの実装では何の問題を見ている:あなたはまた、のような何かを行うことができ

? – khelwood

+0

メソッドexample_methodを実行すると、self.thingの値は元の文字列 'variable'に変更されていない 'changed text' – tombat7112

答えて

0

あなたはクラスに定義したメソッドを呼び出す必要があります。このようにして

class example_class: 

    def __init__(self, variable): 
     self.thing = 'variable' 
     self.example_method() 

    def example_method(self): 
     self.thing = 'changed text' 

    def different_method(self): 

は、あなたが取得するときに/クラス「example_class」のインスタンスを作成し、この方法は「example_method」コンストラクタで呼び出されます。

if __name__ == '__main__': 
    my_class = example_class() 
    my_class.example_method() 
+0

私のポストにコードはありませんが、私はメソッドIを呼び出しますinitでそれを呼びたくはありません。私はクラスのインスタンスを構築し、後で "example_method"を呼び出して変数selfを変更することができます。 – tombat7112

+0

__init__メソッド内でメソッドを呼び出す必要はありません。しかし私が前の記事で言ったように、最後の3行のコードに似たものが欲しい。あなたはそのクラスのインスタンスを必要とし、必要なメソッドを簡単に呼び出すことができます。 – Paradisee

+0

ええ私はクラスのインスタンスを作成し、メソッドを呼び出すが、文字列はまだ変更されません – tombat7112

関連する問題