說我有像這樣如何獲得一個功能的屬性而不是調用它
def spam():
spam.eggs = "Foobar"
#do stuff
return
功能我想在另一個函數spam.eggs
("Foobar"
)的值,而無需實際調用spam()
方法,例如,
def main():
print spam.eggs
我希望它返回Foobar
。然而,這顯然是行不通的,因爲我還沒有所謂的垃圾郵件(),所以我從來沒有分配spam.eggs
財產,所以我必須這樣做
def main():
spam()
print spam.eggs
不過,我不「T要調用的spam()
功能,如果我想的eggs
屬性,其實,我要檢查spam()
是否有雞蛋屬性,如果調用它之前等於"Foobar"
,例如
def main():
if hasattr(spam,'eggs'):
if getattr(spam, 'eggs') == "Foobar":
spam()
但就像之前,因爲我還沒有撥打spam
我還沒有分配spam.eggs
呢。
有沒有辦法做到這一點,也許與裝飾?我想保持分配有點接近的功能,所以我喜歡的東西,不喜歡
def func():
setattr(spam, 'eggs', 'Foobar')
凡我所要做的setattr()
的另一種方法,除非在一個裝飾。
這一切都有點太對我來說抽象。 (我假設我不是唯一一個在想「你爲什麼要這麼做?」)。也許如果你能告訴我們你想要實際做的事情,我們可能會建議一個更優雅的選擇......如果不是,那麼總是更加激勵你知道你正在解決一個真正的問題。 – mgilson 2013-04-09 20:25:13
我有一個模塊,函數,我試圖動態註冊xmlrpc,像'server.register_function(function,function.attr)',其中屬性是RPC方法名稱 – ron975 2013-04-09 20:28:10