Re: [問題] 如何找到class的instance??
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 10 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章