例えば、次のようなメソッド one_method を呼び出すとします。
obj_a.obj_b.obj_c.one_method()
このとき メソッド one_method を定義する中で
呼び出し元の obj_a, obj_b を取得する方法があれば
ご教示いただけないでしょうか?
class C():
def one_method(self):
# ここで obj_a, obj_b を取得する方法はありますか?
...
質問自体は__setattr__あたりを使って、obj_aにobj_bを持たせた時点で、obj_bにobj_aを持たせるとかになると思います。
http://docs.python.jp/2/reference/datamodel.html#object.__setattr__
ただ、コメントの補足の話だとちょっと違って、回答にあるように、そもそもとして多対一や多対多なのに一対一のようなアクセスをしようとするから発生する問題であって、一対一ならば一対一のしくみ
http://docs.djangoproject.jp/en/latest/topics/db/queries.html#id29
https://docs.djangoproject.com/en/dev/topics/db/examples/one_to_one/
を使えば解決する問題だと思います。
#djangoもこういうので__setattr__とか色々使ってた気がします。
質問自体は__setattr__あたりを使って、obj_aにobj_bを持たせた時点で、obj_bにobj_aを持たせるとかになると思います。
http://docs.python.jp/2/reference/datamodel.html#object.__setattr__
ただ、コメントの補足の話だとちょっと違って、回答にあるように、そもそもとして多対一や多対多なのに一対一のようなアクセスをしようとするから発生する問題であって、一対一ならば一対一のしくみ
http://docs.djangoproject.jp/en/latest/topics/db/queries.html#id29
https://docs.djangoproject.com/en/dev/topics/db/examples/one_to_one/
を使えば解決する問題だと思います。
#djangoもこういうので__setattr__とか色々使ってた気がします。
ご回答いただき、誠にありがとうございました!
# # 質問自体は__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)
ご回答いただき、誠にありがとうございました!
2015/11/29 16:37:16