Re: [問題] 如何找到class的instance??

看板Python作者 (阿真)時間15年前 (2009/11/27 01:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/10 (看更多)
※ 引述《ya790206 (殘雲奪月)》之銘言: : 標題: Re: [問題] 如何找到class的instance?? : 時間: Fri Nov 27 00:59:19 2009 : : 最笨的方法 : : class a: : pass : : x=a() : def findx(clsname): : abc=globals() : for i in abc: : try: : if abc[i].__class__ == clsname.__class__: : print abc[i].s : except AttributeError: : pass : : x.s=5 : print type(x) : y=a() : y.s=66 : findx(a()) : : 主要就是用globals找出所有變數 : 然後一個一個去比對資料型態 : 夠笨吧... : ~ : ~ : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 114.38.9.125 : → AndCycle:可以直接傳A而不用a()再做一個instance 11/27 01:36 : → AndCycle:inspect有getmembers跟isclass可以用 11/27 01:37 : → AndCycle:話說回來builtin就有isinstance可以用 ... 11/27 01:39 感謝大家回應 不過現在有個問題 用globals() 用肉眼 努力的看 真的有instance 假設叫 abc (class 是ABC) 可是 我打 abc "這是一個import的module !?!?" 原來是 在globals() 裡面 有同名的module…orz 這當然不是我樂見的事 不過取名字不是我能控制的 我要怎麼讓程式知道我所用的abc 是module還是instance呢 事實上直接用的話 會是module 連用 isinstance(abc,ABC)也會出現 False 看起來像把abc當然module 而不是instance 這種問題有辨法解嗎 拿到同名的instance 而不是module -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.63.180 ※ 編輯: KSJ 來自: 140.112.63.180 (11/27 02:02)
文章代碼(AID): #1B3hwq2D (Python)
討論串 (同標題文章)
文章代碼(AID): #1B3hwq2D (Python)