Home > Software engineering >  Python cannot instantiate an imported class
Python cannot instantiate an imported class

Time:06-23

I have been developing a full-stack application that checks for files and uploads them to a cloud. However, I have come across an interesting problem that I was not able to solve.

I have a problem with instantiating a class, as you will see below:

class UploadFastq:

    def __int__(self,
                some_list, some_str, some_obj, **kwargs):
        self.some_list = some_list
        self.some_obj = some_obj
        self.some_str = some_str
        

    def process(self):
        self.some_methods_calling_processes()
        ...

As you can imagine, I have trimmed the original code for privacy concerns (company dictates, sorry). This class is to handle some-backend related processes, and arguments only contain back related variables. Also, this class is on the different py script, which imports again back-related functions.

Now, the problem is, when I import to another script and try to call and instantiate the class, something funny happens...

from lib.some_back_related_script import UploadFastq

uploads = UploadFastq(some_list=the_list,some_str=the_str,some_obj=the_obj)
uploads.process

OUTPUT:

TypeError: UploadFastq() takes no arguments

I have looked if there are indentation problems, I could not find any. (I am using PyCharm as IDE, and reformatting the file also did not solve)

I have also tried this on an another script(the gui script) and could partially solve it as:

 
from lib.some_back_related_script import UploadFastq
uploader = UploadFastq()
uploader.__int__(  ##TODO how is this possible???)
some_list=the_list,some_str=the_str,some_obj=the_obj
)

However, on the script the class suppose to be called, "__init__" method did not solve the case, and produced this error:

TypeError: UploadFastq.__init__() takes exactly one argument (the instance to initialize)

At this point I am clueless about what is going on and how to solve it. I have experiencing something like this for first time. I also could not find this kind of problem on the internet. soo, I would be much grateful if you could explain how to approach the problem.

P.S.: I work as a bioinformatician/python developer for a quite time and I found many many solutions on this platform. But, this is actually my first question on the stackoverflow!!!

Cheers!

CodePudding user response:

You mispelled the constructor name __init__ as __int__ :

def __int__(self, some_list, some_str, some_obj, **kwargs):

Thus the default constructor (which takes no arguments) was called, and the interpreter is complaining about the given arguments.

TypeError: UploadFastq.__init__() takes exactly one argument (the instance to initialize)
  • Related