Explicit Frustration of the Self
Andres Rosado
arosado at softhome.net
Wed Jan 8 19:40:11 EST 2003
On 04:56 AM 1/4/2003 -0500, the keyboard of python-list-request at python.org
emitted:
>Another thought: how OO is Python? It allows me to create Objects, I
>guess. But do these objects really have methods? I don't think so.
>Not with the way self acts now. Right now, you are effectively,
>creating functions and then calling them with the first argument
>outside of the parenthesis, and to the left of the function, and a
>dot.
>
>
>Observe:
> >>> class Object:
>... name = "Bob"
>...
> >>> def foo(self, argument):
>... print argument + self.name
>...
> >>> o = Object()
> >>> foo(o, "Hello ")
>Hello Bob
>
>
>Which is pretty much the same as:
> >>> class Object:
>... name = "Bob"
>... def foo(self, argument):
>... print argument + self.name
>...
> >>> o = Object()
> >>> o.foo("Hello ")
>Hello Bob
>
>
>I really don't see much of a difference between foo(o, "Hello ") and
>o.foo("Hello "). It must be easy from the point of view of the python
>programming, all you bassically do is mangle it to "Object_foo(self,
>blah)", and pre-process all "object.foo(" to "object_foo(". Seems to
>be.
>So the only real difference is that Object.foo won't conflict with
>OtherObject.foo. But that doesn't seem like the basis of OO.
>In the end OOP is all about the revolution, not of efficiency or
>computational effectiveness, but of how we can understand the
>structure of the world that we create, its objects, its functions.
>The idea of the explicit self retards this understanding, I believe,
>and forces us to view python objects as code, not objects of a
>pseudo-reality.
That's actually how C++ handles classes too. That's why they have the
implicit "this" pointer. When classes are created, IIRC, only the data is
individual[1]. All functions are shared, and the first parameter of EVERY
function in the class is <drum roll>: '*this'[2]. So we end up in the same
direction for eficiency reasons.
[1] Static data is shared, of course.
[2] Static functions don't receive the this pointer.
--
Andres Rosado
Email: andresr at despammed.com
ICQ: 66750646
Homepage: http://andres980.tripod.com/
Most people have two reasons for doing anything --
a good reason, and the real reason.
More information about the Python-list
mailing list