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__
file.__init__(self, path)
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 :)