2016-01-29 43 views
1

我的軟件支持python來自動執行任務(Maya)。當我在這個軟件中撤消或重做時,它會輸出最後一條命令,不幸的是,這是該函數的內存地址,而不是實際有用的內容。因此,用戶看到的輸出Undo: <functools.partial object at 0x000002235DEDDF48>,而不是像Undo: Set Key on something at frame xPython:需要將functools.partial(函數)的結果稱爲別的

那裏看來是沒辦法做瑪雅人從它自己的功能內打印一個有用的結果真正有用的東西,所以現在我要問,如果有一些模糊的方式奶酪它用python讓該實例調用自己有用的軟件將打印的方式,同時希望不會干擾該功能。我會嘗試在這一點上!

def testFunc(): 
    pass 

test = partial(testFunc) 

測試結果<functools.partial object at 0x000002235DEA95E8>

如果任何人能想到一個更準確的標題,請編輯/建議。

+0

它特別打印什麼?最後一個表達式的值?一些特定的變量? –

+3

你可以通過定義'__repr __()'來定義一個'partial'子類來打印更好的標識。雖然它會在哪裏得到這種認同? – kindall

+0

@ kindall這是正確的答案,或讓我知道。如果我的子類partial,我可以'def __repr __(self):return result'並回答你的問題,它從'def __init __(self,* args):'之前調用__repr __()',並從'self.result = args [-1]'所以如果我調用'mypartial(function,arg1,arg2,arg3,extraarg4)',那麼extraarg4就會成爲該標識。 – Vii

回答

2

感謝kindall讓我在評論中處於領先地位,我能夠找到答案。子類partial和定義__repr__()是關鍵。

通過對__init__()抓住*args並把它作爲self.result我們可以用它在__repr__()返回給*args爲使用撤銷/重做時給出瑪雅結果的最後一個參數。

class rpartial(partial): 
    def __init__(self, *args): 
     self.result = args[-1] 
    def __repr__(self): 
     return self.result 

rpartial(function, arg1, arg2, undoredo) 

給最後一行rpartial爲undoredo的字符串是什麼將被瑪雅使用撤銷/重做時打印。

相關問題