[Python-Dev] New metaclass pattern (Was Re: Simulating Class (was Re: Does Python have Class methods)) (original) (raw)
Thomas Heller thomas.heller@ion-tof.com
Wed, 23 May 2001 20:57:28 +0200
- Previous message: [Python-Dev] New metaclass pattern (Was Re: Simulating Class (was Re: Does Python have Class methods))
- Next message: [Python-Dev] explanations for more pybench slowdowns
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Let me try again (and please forgive my mistakes in the detail). The usual way (as in demo\metaclasses):
class B_Meta: ....
B = B_Meta('B', (), {})
class C(B): pass
B is an instance of the (meta)class B_Meta. C is now another instance of the same (meta)class. because B.class, which is the (meta)class itself, is called, and returns a new instance. B_Meta can (and must) implement a lot of behaviour.
In contrast, with my recipe:
def MagicFunction(name, bases, dict): ...construct a class on the fly... ...create an instance of this class... return aninstance_of_a_class
def B_Meta(): pass B_Meta.class = MagicFunction
class C(B): pass
Now C is an_instance_of_a_class (which is an instance of a normal python class), and thus does inherit the normal behaviour of Python classes.
Thomas
PS: I'm sure this all will be much better in descr-branch. I've checked it out and am playing with it from time to time, but most of the time I have to use released Python versions.
- Previous message: [Python-Dev] New metaclass pattern (Was Re: Simulating Class (was Re: Does Python have Class methods))
- Next message: [Python-Dev] explanations for more pybench slowdowns
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]