meta-class troubles

Chris Rebert clp2 at rebertia.com
Mon Aug 30 10:17:24 EDT 2010


On Mon, Aug 30, 2010 at 7:10 AM, Ethan Furman <ethan at stoneleaf.us> wrote:
> Good Day!
>
> I am stuck... hopefully a few fresh pairs of eyes will spot what I am
> missing.
>
> I have a metaclass, Traits, and two different testing files, test_traits.py
> and tests.py.  test_traits works fine, tests generates the following error:
>
> C:\Python31\Lib\site-packages\traits\tests>\python31\python tests.py
> Traceback (most recent call last):
>  File "tests.py", line 4, in <module>
>    class TraitConflict(meta=Traits, traits=(BoxPrint, BigBoxPrint)):
> TypeError: type() takes 1 or 3 arguments
>
>
> Working code from test_traits.py:
> class DerivedClass(metaclass=Traits, traits=(TBundle1, TBundle2)):
>    def repeat(yo, text, count):
>        print('whatever...')
>    def whatsit(yo, arg1):
>        print("calling baseclass's whatsit...")
>        print(super().whatsit(arg1))
>
> Failing code from tests.py:
> class TraitConflict(meta=Traits, traits=(BoxPrint, BigBoxPrint)):
>    def useless(yo):
>        print("this class won't compile")

Shouldn't meta= instead be metaclass= ?

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list