2013-05-31 49 views
3

有沒有辦法限制某個函數被特定函數調用?有沒有辦法限制某個函數被某個函數調用?

def a(): 
    private() # okay 

def b(): 
    private() # raises error 

def private(): 
    print "private" 
+4

如果你要做到這一點,你爲什麼不乾脆把'的直接private''了'裏面的代碼? – BrenBarn

+1

不是沒有一些可怕的'檢查'體操。你爲什麼要這樣?爲什麼不只是調用你需要調用的函數,而不是你不需要的地方? –

+0

在我的代碼中,函數是對象方法,它們在分開時更加有組織,我也可能想要def c()調用private()。 – Derek

回答

3
import inspect 
def private(): 
    cframe = inspect.currentframe() 
    func = inspect.getframeinfo(cframe.f_back).function 
    if func != 'a': 
     print 'not allowed from ', func 
    print "private" 
相關問題