人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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 を取得する方法はありますか?
...

●質問者: domodomodomo
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● TransFreeBSD
●100ポイント ベストアンサー

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


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)

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ