2012-11-02 61 views
0

我有一個類應該調用subprocess.call來運行腳本作爲其工作的一部分。Python 3 - 類的功能數據成員

我已經在模塊中定義了類,並且在模塊的頂部我已經從子流程導入了調用函數。

我不確定我是否應該只在該類的某個函數中使用call(),或者是否應該使其成爲數據成員,然後通過self.call函數對象調用它。

我寧願後者,但我不知道如何做到這一點。理想情況下,我想不要在頂部有子過程,並有類似的東西:

class Base: 
    def __init__(): 
     self.call = subprocess.call 

但上述不起作用。你會如何去做這件事?我很新的Python 3的

+6

爲什麼你需要存儲'call'函數呢? –

+2

這對你來說如何? 'Base()。call('echo')'適用於我。你是否忘記在'__init __(self)'方法簽名中指定'self'參數? –

回答

1

你的意思是你想要的:

import subprocess 

class Base: 
    def __init__(self): #don't forget `self`!!! 
     self.call = subprocess.call 

instance = Base() 
print (instance.call(['echo','foo'])) 

雖然我真的喜歡:

import subprocess 

class Base: 
    call = staticmethod(subprocess.call) 
    def __init__(self): 
     self.call(["echo","bar"]) 

instance = Base() 
print (instance.call(['echo','foo'])) 

最後,如果你不需要將call作爲您的API的一部分,我認爲最好在方法中使用subprocess.call

+0

你也可以使用'__call__ = staticmethod(subprocess.call)'然後'instance(['echo','foo'])' – Liso