class object access in class definition?

Steve Holden sholden at holdenweb.com
Wed Mar 7 22:01:26 EST 2001


"Lars Damerow" <lars at pixar.com> wrote in message
news:Pine.LNX.4.21.0103071835560.6130-100000 at zero...
> I figured that the my problem stems from when Python binds the class name
to
> the scope--when it encounters the "class" keyword, or when the class
definition
> completes. It seems like it happens when the class definition completes.
>
> What I'm trying to do is automatically register the derived classes of a
base
> class at compile time, like this:
>
> derivedClasses = []
>
> class BaseClass:
>     pass
>
> class DerivedClass(BaseClass):
>     derivedClasses.append(DerivedClass)
>
> This doesn't work because DerivedClass doesn't seem to be bound at the
time of
> the append() call. I can put the append() call in the DerivedClass's
> constructor, but that requires an instance to be created before the class
can
> be registered.
>
> If this isn't possible, it's no big deal; its goal is to avoid duplicating
> information in the code, nothing more.
>

Well, if you're prepared to be pragmatic about it, what's wrong with:

derivedClasses = []

class BaseClass:
    pass

class DerivedClass(BaseClass):
    pass

derivedClasses.append(DerivedClass)

Not elegant, but practical.

regards
 Steve






More information about the Python-list mailing list