Preventing execution of a method

MRAB google at mrabarnett.plus.com
Thu Dec 11 17:44:44 CET 2008


alex23 wrote:
> On Dec 12, 2:07 am, "Emanuele D'Arrigo" <man... at gmail.com> wrote:
>> I.e. if I have a class with two methods, doSomethingSafe() and
>> doSomethingDangerous(), is there a way to prevent another module from
>> executing doSomethingDangerous() but allow the execution of
>> doSomethingSafe()?
>>
>> My understanding is that in python this is not possible. Can you
>> confirm?
> 
> Your understanding is correct.
> 
> The Python convention is to prefix non-public methods/classes etc with
> an underscore, as in _doSomethingDangerous(). This is meant to
> indicate to anyone using your module that they shouldn't use this
> function, at least not without having a good understanding of what it
> does.
 >
You could add a little bit of protection by always passing a certain 
object into _doSomethingDangerous().

_guard = object()

def _doSomethingDangerous(g):
     if g is not _guard:
         raise Exception("Don't do that!")

That would at least stop accidental calls.



More information about the Python-list mailing list