On Thu, Jul 29, 2021 at 06:07:13PM -0400, John Kacur wrote: > Add the __contains__ function to the rtevalCfgSection class to make "in" > function correctly. Thank you. A possible correction: I believe the correct implementation (to delegate the 'in' operation to the dictionary-like object self.__cfgdata) is def __contains__(self, key): return key in self.__cfgdata I mocked a bit of rtevalCfgSection with your implementation: class rtevalCfgSection: def __init__(self, cfgdata): self.__cfgdata = cfgdata def __contains__(self, key): if key in self.__cfgdata.keys(): return self.__cfgdata[key] return None and then tried it with some carefully chosen values >>> d = {1: 'x', 2: 'y', 3: None, 4: False} >>> r = rtevalConfig.rtevalCfgSection(d) >>> 1 in d, 1 in r (True, True) >>> 9 in d, 9 in r (False, False) >>> 3 in d, 3 in r (True, False) With the corrected implementation, the results would always be the same, not different in the '3' case. Additionally, my version avoids extra operation on the underlying dictionary. Jeff