2016-07-19 6 views
0

私はメインのスクリプトを持っており、そのクラスに別のモジュールをインポートしています。引数の1つをインスタンス化すると、yとなるので、self.y = y__init__メソッドにあります。今問題は、メインのスクリプトで値を変更し、同じクラスからメソッド 'live_plotting'を呼び出すforループがあることです。私は通常、引数として再びyの値を渡さなければならず、メソッド内に別のself.y = yを持っていなければなりません。これはきちんとしているわけではありません。もう一度引数として渡さなくてもモジュール間でself.yを更新する方法はありますか?私はポインタを使うことを考えましたが、明らかにすべてがPythonのポインタです。誰かが代替ソリューションを提供できますか?モジュールのPython間で変数値を更新するにはどうすればよいですか?

+0

my_instance = class(x,y) #if you want to modify my_instance.y my_instance.y = value 

またはクラスのミューテータとを::

def set_y(self,value): self.y=value 

その後、メインにyを変更したい場合、あなたのオブジェクトをinstanciating後

そのようなあいまいな質問であなたを助けることができないでしょう。これまでに書いたコード、予想される入出力、およびそれが機能しない理由の説明を提供してください。 –

+0

@BenjaminHodgsonあまりにも多くのコードを提供することはできません。基本的な構造があり、私のコードではなく、モジュール間で変数を更新することについて質問しています。 – marjak

+0

また、コードにはmatplotlibに関する知識が必要なので、通常のプログラマーはそれを理解できません。だから、私はモジュールに関する一般的な質問をしています。 – marjak

答えて

2

私はそれがあなたが望むものかどうかは分かりませんが、私の理解から、あなたは方法なしでself.yの値を更新したいのですか?

これは

object_nameあなたはクラスのインスタンスに属し __init__ある属性で宣言された 自己変数として見て、あなたのクラスのインスタンスを付けた名前である
object_name.y = new_value 

を実行することによって行われることになります。

0

私が理解しているところから、突然変異体はあなたが探しているものではありません。 ミューテータは、属性値にアクセスして値を変更するクラス内の関数です。

あなたのコードでは、self.yyのように、yを使用したいと思います。しかし、関数の引数としてyを指定すると、self.y = yの関数内のyは、引数として渡されたyのコピーになります。 self.y = yはコピーされたyの値をとり、self.yに格納します。我々は勝った

my_instance.set_y(value) 
関連する問題