почему создание класса выдает ошибку - PullRequest
2 голосов
/ 22 февраля 2010

Просто играю в классе

def func(*args, **kwargs):
    print args, kwargs

class Klass(func): pass

выдает ошибку

TypeError: Ошибка при вызове базы метаклассов Аргумент function () 1 должен быть кодом, а не str

Что это значит, я никуда не прохожу? и да, я должен передавать классы по базам, но почему ошибка не говорит об этом, а не об этой загадочной ошибке?

1 Ответ

2 голосов
/ 22 февраля 2010

см. Здесь причину загадочного сообщения

http://bugs.python.org/issue6829

questions Ошибка при вызове баз метаклассов: аргумент function () 1 должен быть кодом, а не str имеет ту же проблему.

Редактировать : тренировка

Хотя вы можете использовать метакласс, чтобы заставить его работать по-другому;)

def func(name, klassDict):
    return type(name, (), klassDict)

class MyMeta(type):
    def __new__(self, name, bases, klassDict):
        return bases[0](name, klassDict)

class Klass(func):
    __metaclass__ = MyMeta

print Klass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...