name lookup failure using metaclasses with unittests
Arnaud Delobelle
arnodel at gmail.com
Thu Apr 11 04:19:59 EDT 2013
On 11 April 2013 07:43, Ulrich Eckhardt <ulrich.eckhardt at dominolaser.com> wrote:
> The second question that came up was if there is a way to keep a metaclass
> defined inside the class or if the only way is to provide it externally.
Yes, using metaclasses! I wouldn't recommend it though. Here's a
proof of concept:
class MyType(type):
def __new__(meta, name, bases, attrs):
try:
metaclass = attrs.pop('__metaclass__')
except KeyError:
return type.__new__(meta, name, bases, attrs)
else:
return metaclass(name, bases, attrs)
class MyObject(metaclass=MyType):
pass
>>> class Test(MyObject):
... def __metaclass__(name, bases, attrs):
... print("Test metaclass")
... return MyType(name, bases, attrs)
...
Test metaclass
--
Arnaud
More information about the Python-list
mailing list