Как создать экземпляр класса внутри этого метода класса? - PullRequest
7 голосов
/ 06 января 2010

Я хочу создать экземпляр класса внутри себя. Я попытался сделать это так:

class matrix:
    (...)
    def det(self):
        (...)
        m = self(sz-1, sz-1)
        (...)
    (...)

но я получил ошибку:

m = self(sz-1, sz-1)

AttributeError: экземпляр матрицы не имеет __call__ метода

Итак, я попытался сделать это следующим образом:

class matrix:
    (...)
    def det(self):
        (...)
        m = matrix(sz-1, sz-1)
        (...)
    (...)

и я получил еще одну ошибку:

m = matrix(sz-1, sz-1)

NameError: глобальное имя 'matrix' не определено

Конечно, матрица не является глобальным классом. Я понятия не имею, как решить эту проблему.

1 Ответ

12 голосов
/ 06 января 2010
m = self.__class__(sz-1, sz-1)

или

m = type(self)(sz-1, sz-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...