好吧,讓我試着盡我所能解釋這一點。可以說我有一個名爲Foobar的類:Python - 通過模塊屬性(通過字符串名稱)獲得對類實例的訪問
class Foobar():
def __init__(self, foo, bar, choo):
self.foo = foo
self.bar = bar
self.choo = choo
def doIt(self):
return self.foo + self.bar
,我想有一組的,我將在我的應用程序中使用Foobar的實例10點的可能性。現在,我的最終用戶不知道或關心foo,bar和choo的價值,但願意選擇我將標註的10種可能性中的一種。
所以我想將他們的選擇存儲在數據庫中(但我只想存儲代表Foobar類的特定實例的標籤)。這樣我就可以抓住我需要的實例。
於是,我就喜歡這樣的模塊中設置了我所有的情況下(讓稱它爲「my_instances.py」)
import Foobar
label_one = Foobar("eenie", "meenie", "miney")
label_two = Foobar("teeny", "toony", "tiny")
...
label_ten = Foobar("biggie", "boogie", "baggie")
和方式,一旦我有代表他們選擇的DB串,我可以像這樣抓住該實例(我忽略瞭如何獲取字符串,但是顯示了我如何獲取實例)。
import my_instances
my_object = getattr(my_instances, 'label_one')
result = my_object.doIt()
我得到一個TypeError:unbound方法doIt()必須用Foobar實例作爲第一個參數調用。
所以看來我得到Foobar,但不是一個真正的實例。任何幫助將不勝感激。我相信我已經解釋了我的情況,你看到了我想要做的更簡單的解決方法,請給出建議。
嘗試`從Foobar的進口Foobar` – Elalfer 2011-01-23 03:33:29
我可能會做這種展示的不好,但目前還沒有命名Foobar的模塊,只有一類 – MattoTodd 2011-01-25 14:52:12