2013-05-31 2 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" 
Смежные вопросы