这是一个新问题,因为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 ()仅用于执行,我理解。