Metaclasses help :-)
Michael Hudson
mwh at python.net
Thu Oct 31 09:20:28 EST 2002
More information about the Python-list mailing list
Thu Oct 31 09:20:28 EST 2002
- Previous message (by thread): Metaclasses help :-)
- Next message (by thread): Metaclasses help :-)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
sismex01 at hebmex.com writes: > OK, so it seems I'm looking for my brain to explode, > so be it :-) Welcome. > I'm looking to create a metaclass which will check __init__'s > keyword arguments *before* they're passed to __init__. I don't know what the best way to do this is. This works: def _oinit(self, **kw): print kw # your code goes here! if self.__oinit__: self.__oinit__(**kw) def ArgChecker(name, bases, ns): ns["__oinit__"] = ns.get("__init__") ns["__init__"] = _oinit return type(name, bases, ns) class Test: __metaclass__ = ArgChecker def __init__(self, a): print a >>> Test(a=1) {'a': 1} 1 <__main__.Test object at 0x13d670> or there's this approach: class ArgChecker2(type): def __call__(self, **kw): print kw return super(ArgChecker2, self).__call__(**kw) class Test2: __metaclass__ = ArgChecker2 def __init__(self, a): print a >>> Test2(a=1) {'a': 1} 1 <__main__.Test2 object at 0x13d6b0> Hmm, perhaps my AutoReloader would be better off using that approach. > Any tiny example will be very much appreciated. HTH! Cheers, M. -- I wouldn't trust the Anglo-Saxons for much anything else. Given they way English is spelled, who could trust them on _anything_ that had to do with writing things down, anyway? -- Erik Naggum, comp.lang.lisp
- Previous message (by thread): Metaclasses help :-)
- Next message (by thread): Metaclasses help :-)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list