我有一个主要提供一组ID的类,但有其他方法。像这样:
class PoundIds(object):
....
@property
def cats(self):
return self.cats
@property
def dogs(self):
return self.dogs
@property
def animal_ids(self):
return set(dog.id for dog in self.dogs) | set(cat.id for cat in self.cats)
def __contains__(self, id):
return id in self.animal_ids
def __iter__(self, id):
return self.animal_ids.__iter__()
出于很多目的,我可以用set([1,2,3])
来模拟这个,但不是全部。如果我可以创建一个模拟,提供我需要的特殊方法,否则将调用传递给一个集合,这将很好地工作。可以模拟创建一个基于现有对象的模拟但是给它额外的方法吗?它似乎应该如此,但我不知道如何做到这一点。