On 06/15/2015 08:07 PM, Chris Angelico wrote:
On Tue, Jun 16, 2015 at 9:57 AM, Steven D'Aprano
<steve+comp.lang.pyt...@pearwood.info>  wrote:
>I have two ideas for this, a module-level global, or a flag set on the
>function object itself. Remember that the usual way of using this will be
>"from module import edir", there are two obvious ways to set the global:
>
>import module
>module.dunders = False
>
># -or-
>
>edir.__globals__['dunders'] = False
>
>
>Alternatively, I can use a flag set on the function object itself:
>
>edir.dunders = False
>
For most situations, the last one is extremely surprising - attributes
on functions aren't normally meant to be changed by outside callers,

Or inside callers either.  You can't be sure of the name and there is no self.


it always feels wrong (they belong to the function itself). But since
this is interactive, I'd advise going for the absolute simplest, which
this would be. Go for the function attribute IMO.


Another way is to make it an object with a __call__ method.

The the attribute can be accessed from both outside and inside dependably.

Cheers,
   Ron

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to