[Python-Dev] Arbitrary attributes on funcs and methods
Paul Prescod
paul@prescod.net
Wed, 12 Apr 2000 07:20:18 -0500
Vladimir Marangozov wrote:
>
> ...
>
> I don't see the purpose of attaching state (vars) to an algorithm
> (i.e. a function).
A function is also an object.
> What are the benefits compared to class instances?
If I follow you, you are saying that whenever you need to associate
information with a function, you should wrap up the function and object
into a class. But the end result of this transformation could be a
program in which every single function is a class. That would be
incredibly annoying, especially with Python's scoping rules. In general,
it may not even be possible.
Consider the following cases:
* I need to associate a Java-style type declaration with a method so
that it can be recognized based on its type during Java method dispatch.
How would you do that with instances?
* I need to associate a "grammar rule" with a Python method so that the
method is invoked when the parser recognizes a syntactic construct in
the input data.
* I need to associate an IDL declaration with a method so that a COM
interface definition can be generated from the source file.
* I need to associate an XPath "pattern string" with a Python method so
that the method can be invoked when a tree walker discovers a particular
pattern in an XML DOM.
* I need to associate multiple forms of documentation with a method.
They are optimized for different IDEs, environments or languages.
> And these special assignment rules because of the real overlap with
> real instances... Grrr, all this is pretty dark, conceptually.
I don't understand what you are saying here.
> Once the puzzle would be solved, we'll discover that there would be only
> one additional little step towards inheritance for modules. How weird!
> Sounds like we're going to metaclass again...
I don't see what any of this has to do with Barry's extremely simple
idea. Functions *are objects* in Python. It's too late to change that.
Objects can have properties. Barry is just allowing arbitrary properties
to be associated with functions. I don't see where there is anything
mysterious here.
--
Paul Prescod - ISOGEN Consulting Engineer speaking for himself
"I and my companions suffer from a disease of the heart that can only
be cured with gold", Hernan Cortes