首先,我不知道這可能是用例吧,因爲理想而把對象列表,你可以通過字典跟蹤他們,甚至如果你有所有列表的列表你可以檢查它們中的對象,所以更好的設計不需要這樣的搜索。
所以,讓我們假設爲樂趣,我們想知道其中列出了一個對象。我們可以利用該gc
知道的所有對象,誰指的是它,所以這裏是一個which_list
功能,告訴它列出引用它的事實(這一定並不意味着它包含它)
import gc
class A(object): pass
class B(A): pass
def which_list(self):
lists_referring_to_me = []
for obj in gc.get_referrers(self):
if isinstance(obj, list):
lists_referring_to_me.append(obj)
return lists_referring_to_me
a = A()
b = B()
foo = [a, 52, b]
bar = ['spam', b]
print which_list(a)
print which_list(b)
輸出:
[[<__main__.A object at 0x00B7FAD0>, 52, <__main__.B object at 0x00B7FAF0>]]
[[<__main__.A object at 0x00B7FAD0>, 52, <__main__.B object at 0x00B7FAF0>], ['spam', <__main__.B object at 0x00B7FAF0>]]
你的問題不太清楚。你想測試課程是否在某個列表中? – tjvr 2010-07-26 09:16:28
您是否在尋找綁定到實例所包含的任何/所有列表的名稱? – 2010-07-26 09:17:31