pablo
pablo

Reputation: 404

How to create class instance inside that class method?

I want to create class instance inside itself. I tried to it by this way:

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

but I got error:

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

AttributeError: matrix instance has no __call__ method

So, I tried to do it by this way:

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

and I got another error:

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

NameError: global name 'matrix' is not defined

Of course matrix is not global class. I have no idea how to solve this problem.

Upvotes: 10

Views: 11354

Answers (1)

Daniel Roseman
Daniel Roseman

Reputation: 600059

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

or

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

Upvotes: 15

Related Questions