こんにちわ。
初歩的な部分な気がするのですが、たどり着けないので質問します。
環境
- Python 3.6
- (PyQt5)
やりたいこと
ファイルが3つあります。
main.py、A.py、B.py
mainでAとBを使います。
Python
1from . import A 2class main: 3 AA = A.Aclass() 4 BB = B.Bclass() 5 def print_a(self): 6 print(self.AA.a)
Aで使っているaという変数があります。
これをmainから参照しています。
Python
1class Aclass: 2 a = "a"
aを、Bから変更したいです。
変更するのはmainで使用しているaと同じオブジェクト(同じID)です。
Bからaを変更すれば、mainでprint()等した際にちゃんと変更されている状態を目指してます。
試したこと
Python
1class Aclass: 2 a = "a" 3 def set_a(self, value): 4 global a 5 self.a = value
これでaの共有ができないかと考えたのですが、B側でAのインスタンスを作っても同じIDにはならなかったので、うまくいきませんでした。
条件
その他
PyQt5で画面を作成しています。
その際、プログレスバーをダイアログ画面で表示して、その中に1つのラベルとプログレスバーを表示します。
ラベルには、現在の作業内容を表示します。
作業は、関数内で行います。
ラベル内容の変更は、その処理の関数の行に入る直前に変更します。
処理をクラスごとに分ける関係で、プログレスバーの画面を表示・実行した場所とは別のクラス(ファイル)でラベルの変更を行うこともあります。
このパターンを行う際に、今回の質問内容がほしくなりました。
サンプルが用意できなかったことと、変数の共有等の初歩的な可能性が高いと思い、今回はこのような形の質問方法にしました。
Javaの場合、static等を使えば似たようなことができたと思うのですが、Pythonでは再現できないということでしょうか。
以上です
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/12 05:04
2018/11/12 05:10