[Python-Dev] Arbitrary attributes on funcs and methods

Greg Stein gstein@lyra.org
Wed, 12 Apr 2000 12:20:55 -0700 (PDT)


On Wed, 12 Apr 2000, Skip Montanaro wrote:
>     BAW> Functions and methods are first class objects, and they already
>     BAW> have attributes, some of which are writable.
> 
> (Trying to read Fredrik's mind...)
> 
> By extension, we should allow writable attributes to work for other objects.
> To pollute this discussion with an example from another one:
> 
>     i = 3.1416
>     i.__precision__ = 4
> 
> I haven't actually got anything against adding attributes to functions (or
> numbers, if it's appropriate).  Just wondering out loud and playing a bit of
> a devil's advocate.

Numbers have no attributes right now.

Functions have mutable attributes (__doc__). Barry is allowing them to be
annotated (without crushing the values into __doc__ in some nasty way).

Paul gave some great examples. IMO, the Zope "visibility by use of
__doc__" is the worst kind of hack :-)  "Let me be a good person and doc
all my functions. Oh, crap! Somebody hacked my system!"  And the COM thing
was great. Here is what we do today:

  class MyCOMServer:
    _public_methods_ = ['Hello']

    def private_method(self, args):
      ...

    def Hello(self, args)
      ...

The _public_methods_ thing is hacky. I'd rather see a "Hello.public = 1"
in there.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/