[Python-3000] Removing 'self' from method definitions
Ronald Oussoren
ronaldoussoren at mac.com
Tue Apr 18 10:56:28 CEST 2006
On 18-apr-2006, at 10:49, Guido van Rossum wrote:
> On 4/18/06, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
>> The problem is that there's no way for Python to know
>> which class the method is "in", in the sense required
>> here.
>>
>> That could be fixed by giving functions defined inside
>> a class statement an attribute referring back to the
>> class. It would create a circular reference, but that's
>> not so much of a problem these days.
>
> This begs two questions (at least):
>
> - How would the function be given the attribute? At the time the
> function is being defined the class doesn't exist yet; and by the time
> the class exists, the function may be wrapped in any number of layers
> of decorators which may or may not pass on attribute assignment (most
> implementations of decorators I've seen don't -- at best they copy the
> attributes that already exist on the function into the wrapper).
And related to this: a function may be used as a method on several
classes,
storing the attribute on the function is therefore not possible without
significantly changing the language.
<code>
class A (object):
pass
class B (object):
pass
def myMethod(self):
print "hello from", self.__class__
A.myMethod = myMethod
B.myMethod = myMethod
A().myMethod()
B().myMethod()
</code>
Ronald
More information about the Python-3000
mailing list