[Python-Dev] Meta-reflections
Kevin Jacobs
jacobs@penguin.theopalgroup.com
Wed, 20 Feb 2002 13:49:51 -0500 (EST)
On Wed, 20 Feb 2002, Gordon McMillan wrote:
> On 20 Feb 2002 at 8:30, Kevin Jacobs wrote:
> > Attributes currently have a flat namespace,
>
> Instance attributes do, but that's a tautology.
Yes, though one implication of the new slots mechanism in Python 2.2 is that
we now have have non-flat per-instance namespaces for slots. i.e., we would
have per-instance slots that would hide other per-instance slots of the same
name from ancestor classes:
class Base(object):
__slots__ = ['foo']
def __init__(self):
self.foo = 1 # which slot this sets depends on type(self)
# if type(self) == Base, then the slot is
# described by Base.foo.
# else if type(self) == Derived, then the
# slot is described by Derived.foo
class Derived(Base):
__slots__ = ['foo']
def __init__(self):
Base.__init__(self)
self.foo = 2 # this is NOT the same foo as in Base
o = Derived()
print o.foo
> 2
o.__class__.__base__.foo = 3
print o.foo
> 2
print o.__class__.__base__.foo
> 3
So slots, as currently implemented, do not act like attributes, and this
whole discussion revolves around whether they should or should not.
Regards,
-Kevin
--
Kevin Jacobs
The OPAL Group - Enterprise Systems Architect
Voice: (216) 986-0710 x 19 E-mail: jacobs@theopalgroup.com
Fax: (216) 986-0714 WWW: http://www.theopalgroup.com