Hi,everyone. I've been trying to extend Python's file type but I'm new to Python so I don't know if I'm going about it the right way. I hope someone can help me out with this or point me in the right direction.
The problem isn't really subclassing file, but a function I tried adding to it.
What I want to do is have an instance of my class, let's call the class Subfile, and obtain a list of Subfiles from it in case it is a directory, so I can then iterate over them and use the functions I defined for the class.
I think it's easier to see it with an example:
class Subfile(file): def __init__(self, path): if(not os.path.isdir(path): file.__init__(self, path) self.__path = path def listFiles(self): if(os.path.isdir(self.__path)): for file in os.listdir(os.path.abspath(self.__path)): yield Subfile(os.path.abspath(self.__path) + "/" + file) def someFunction(self): print "Did something" subfile = Subfile("some/dir") for file in subfile.listFiles(): file.someFunction()
The idea is to create an instance of Subfile for some directory, to use some functions I defined and then get an instance of Subfile for the files under that directory so I can use some other functions on them.
However, when I try doing something like this, I get the following error message:
Traceback (most recent call last):
File "XXXX", line 94, in <module>
for file in dir.listFiles():
File "XXXX", line 52, in listFiles
yield PRFile(os.path.abspath(self.__path) + "/" + file)
File "XXXX", line 20, in __init__
TypeError: __init__() takes exactly 2 arguments (3 given)
Could someone tell me what I'm doing wrong?
Thank you very much in advance and sorry for the lengthy question :)
Edited by corbenik: n/a