newbie: self.member syntax seems /really/ annoying

madzientist madzientist at gmail.com
Wed Sep 12 17:54:53 EDT 2007


As a newbie to Python (and OOP), I would love to hear what people
think of Steven's suggestion below. Is there a reason why classes
would be useful for the OP's question ? If you can point me to a brief
online tutorial addressing this, I would happily go there to read it
too :)

Thanks, Suresh

On Sep 12, 8:38 am, Steven D'Aprano <st... at REMOVE-THIS-
cybersource.com.au> wrote:
> On Wed, 12 Sep 2007 03:21:58 -0700, Charles Fox wrote:
> > I've just started playing around with Python, as a possible replacement
> > for a mix of C++, Matlab and Lisp.  The language looks lovely and clean
> > with one huge exception:  I do a lot of numerical modeling, so I deal
> > with objects (like neurons) described mathematically in papers, by
> > equations like
> >     a_dot = -k(a-u)
> > In other languages, this translates nicely into code, but as far as I
> > can tell, Python needs the ugly:
> >     self.a_dot = -self.k(self.a-self.u)
>
> I think you've been seriously mislead. You don't NEED self. That's only
> for writing classes.
>
> Although Python is completely object oriented, and everything is an
> object, you don't have to put your code in classes.
>
> Instead of doing something like this:
>
> class Adder(object):
>     """Pointless class to add things."""
>     def __init__(self, value):
>         self.value = other
>     def add(self, other):
>         x = self.value + other
>         return float(x)
>
> you don't need a class. Just write a function:
>
> def add(x, other):
>     """Function that adds other to x."""
>     return float(x + other)
>
> Here's how I would write your function above:
>
> def function(a, u, k):
>     """Calculate a_dot from a, u and k."""
>     return -k(a-u)
>
> And here is how I would use it:
>
> a = 57 # or whatever...
> u = 54
> k = 3
> a_dot = function(a, u, k)
>
> See? Not a single "self" in sight.
>
> You might also like to read about a strange, bizarre programming that
> forces you to put everything inside classes:
>
> http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns...
>
> --
> Steven.





More information about the Python-list mailing list