encapsulating a global variable
Rhodri James
rhodri at kynesim.co.uk
Tue Feb 25 09:14:54 EST 2020
On 25/02/2020 12:38, BlindAnagram wrote:
> I would appreciate advice on whether it is possible to avoid the use of
> a global variable used in a function by encapsulating it in a class
> without maaking any changes to the call interface (which I cannot change).
>
> I have:
>
> ----------------
> seen = dict()
>
> def get_it(piece):
> ...
> return seen[piece]
> ----------------
>
> and I am wondering if it is possible to use a class something like
>
> ----------------
> class get_it(object):
>
> seen = dict()
>
> def __call__(piece):
> return seen[piece]
> ----------------
>
> to avoid the global variable.
I wouldn't. Calling the class name creates an instance of the class, so
won't actually do what you want. You could rewrite the class and create
an instance to call instead:
class GetIt:
seen = dict()
def __call__(self, piece):
return GetIt.seen[piece]
get_it = GetIt()
but then you have a global class instance hanging around, which is not
actually any better than a global dictionary.
--
Rhodri James *-* Kynesim Ltd
More information about the Python-list
mailing list