Implementing class attribute access methods via pseudo-function o verloading.

Diez B. Roggisch deetsNOSPAM at web.de
Mon Oct 25 13:25:26 CEST 2004


> Am I correct in stating that Python does not support function overloading?
> Have I been hiding under a rock and not noticed the thousands of examples
> that illustrate this approach?

No, you are basically right - there is no implicit type-based dispatch in
python. There are some recipes for  that, but basically they do the same
you to - check for arguments types, and dispatch accordingly

> Any comments are welcome!

Why don't you use properties? That even spares you the () for accessing
variables, and allows direct left-hand-side assignment:

class Foo(object):
    def __init__(self):
        self._bar = "bar"

    def _g_bar(self):
        return self._bar

    def _s_bar(self, value):
        self._bar = value

    bar = property(_g_bar, _s_bar)

f = Foo()

print f.bar
f.bar = "baz"

print f.bar


I really prefer that over all other mechanisms, and it allows for bar not
beeing simply stored in the object itself, but instead e.g. fetched lazily
from a database or received/transmitted over a network.

-- 
Regards,

Diez B. Roggisch



More information about the Python-list mailing list