Python, 呼び出し元のオブジェクトの取得方法


例えば、次のようなメソッド 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 を取得する方法はありますか?
...

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/09/30 08:05:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

ポイント100pt

質問自体は__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__とか色々使ってた気がします。

id:domodomodomo

ご回答いただき、誠にありがとうございました!

2015/11/29 16:37:16

その他の回答0件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268ここでベストアンサー

ポイント100pt

質問自体は__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__とか色々使ってた気がします。

id:domodomodomo

ご回答いただき、誠にありがとうございました!

2015/11/29 16:37:16
id:domodomodomo
#
# 質問自体は__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)
  • id:domodomodomo
    これの対処の仕方について検討しています...。
    http://stackoverflow.com/questions/1823880/relatedmanager-object-has-no-attribute

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません