Attack a sacred Python Cow

Nikolaus Rath Nikolaus at rath.org
Mon Jul 28 09:38:36 CEST 2008


Michael Torrie <torriem at gmail.com> writes:
> I think the biggest reason why an implicit self is bad is because it
> prevents monkey-patching of existing class objects.  Right now I can add
> a new method to any existing class just with a simple attribute like so
> (adding a new function to an existing instance object isn't so simple,
> but ah well):
>
> def a(self, x, y):
>     self.x = x
>     self.y = y
>
> class Test(object):
>     pass
>
> Test.setxy = a
>
> b = Test()
>
> b.setxy(4,4)
>
> print b.x, b.y
>
> If self was implicit, none of this would work.

No, but it could work like this:

def a(x, y):
     self.x = x
     self.y = y

class Test(object):
     pass

Test.setxy = a
b = Test()

# Still all the same until here

# Since setxy is called as an instance method, it automatically
# gets a 'self' variable and everything works nicely
b.setxy(4,4)

# This throws an exception, since self is undefined
a(4,4)


Best,

   -Nikolaus

-- 
 »It is not worth an intelligent man's time to be in the majority.
  By definition, there are already enough people to do that.«
                                                         -J.H. Hardy

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C




More information about the Python-list mailing list