Я пытаюсь создать класс, содержащий имена файлов в папке. Но я хочу, чтобы он вел себя как набор. Теперь у меня есть это:
class Files():
def __init__(self, in_dir):
self.in_dir = in_dir
self.files = set(map(os.path.basename, glob.glob(self.in_dir + "/*.txt")))
def __add__(self, other):
return self.files + other.files
def __or__(self, other):
return self.files | other.files
def __and__(self, other):
return self.files & other.files
def __xor__(self, other):
return self.files ^ other.files
Эта работа, и я могу сделать это так:
f1 = Files(inDir1)
f2 = Files(inDir2)
diff_files = f1 ^ f2 % this give files that are in f1 or f2 folder but not in both folders
Это нормально, но проблема в том, что diff_files
не является экземпляром Files
. Как изменить мой класс, чтобы он вел себя как в python 3.x?
set
напрямую? Я предполагаю, что есть еще код, который вы не показываете, но в его нынешнем виде я бы взял код, который у вас есть в__init__
, и просто сделал его функцией, которая возвращает набор. - person Ismail Badawi   schedule 09.06.2014