扩展设置以进行自定义设置

时间:2014-06-09 04:50:18

标签: python subclass

这是一个新问题,因为question

我想扩展set以在文件夹中创建自定义文件名集:

class FilesSet(set):

    def __init__(self, in_dir = None):
        set.__init__(self, ())

        self.in_dir = ''
        self.files = set()        

        if in_dir:        
            self.in_dir = in_dir        
            self.files = set(map(os.path.basename, 
                             glob.glob(self.in_dir + "/*.txt")))


    def __contains__(self, item):
        return item in self.files

    def __len__(self):
        return len(self.files)

    def __iter__(self):
        return iter(self.files)     

当我尝试时:

f1 = FilesSet(in_dir = inDir1)
f2 = FilesSet(in_dir = inDir2)

c1 = f1 | f2
c2 = f1 & f2

print(c1, c2)

c1和c2为空。为什么?我应该覆盖set中的其他方法吗?来自link我想我只需要定义包含 len iter 。其他方法,例如(), sub (), xor ()仅用于执行,我理解。

0 个答案:

没有答案