検討 多対一の関係の一側のオブジェクトに多の要素を持たせることについて
例えば、次のようなメソッド one_method を呼び出すとします。
obj_a.obj_b.obj_c.one_method()このとき メソッド one_method を定義する中で
Python, 呼び出し元のオブジェクトの取得方法 例えば、次のよう… - 人力検索はてな
呼び出し元の obj_a, obj_b を取得する方法があれば
ご教示いただけないでしょうか?
class C():
def one_method(self):
# ここで obj_a, obj_b を取得する方法はありますか?
大人しく引数として与える①の方法が望ましそう。
理由としてはクライアント側からの動作がわかりづらくなるから。
ClassA多 対 一ClassB, ClassB多 対 一ClassC で無理やり
一側に多の要素を暫定的に持たせるのは良くない...。
検討① 引数として与える
obj_a.obj_b.obj_c.one_method(obj_a, obj_b)
検討② 値を設定するときに与える。
# # 質問自体は__setattr__あたりを使って # obj_aにobj_bを持たせた時点で # obj_bにobj_aを持たせるとかになると思います。 # class A(): def get_obj_b(self): self.obj_b.obj_a = self.obj_a return self.obj_b class B(): def get_obj_c(self): self.obj_c.obj_b = self.obj_b return self.obj_c class C(): def one_method(self): print(self.obj_b) print(self.obj_b.obj_a)
回答で指摘されて気づきました。なんでこんな不自然なことをしようとしてたんだろう。