assert dir() == ["__builtins__", "__doc__", "__name__"] import os assert "write" in dir(os) assert "__add__" in dir(int) assert "mro" not in dir(int) class Foo(object): def __init__(self): self.x = 17 self.y = "blah" self.z = 8.2 x = Foo() assert "x" in dir(x) # instance assert "y" in dir(x) # instance assert "z" in dir(x) # instance assert "__init__" in dir(x) # class assert "__getitem__" in dir(x) # bases class CustomDir(object): def __dir__(self): return ["kan", "ga", "roo"] x = CustomDir() assert dir(x) == ["ga", "kan", "roo"] class DirNotList(object): def __dir__(self): return 7 x = DirNotList() try: dir(x) except TypeError: pass else: raise AssertionError class DirNotCallable(object): __dir__ = 7 x = DirNotCallable() try: dir(x) except TypeError: pass else: raise AssertionError ################################################################################ # example run ################################################################################ # # Python 2.6a0 (trunk:52633M, Nov 7 2006, 17:28:32) [MSC v.1310 32 bit (Intel)] o # n win32 # Type "help", "copyright", "credits" or "license" for more information. # >>> assert dir() == ["__builtins__", "__doc__", "__name__"] # [26878 refs] # >>> # [26878 refs] # >>> import os # [26880 refs] # >>> assert "write" in dir(os) # [26880 refs] # >>> # [26880 refs] # >>> assert "__add__" in dir(int) # [26978 refs] # >>> assert "mro" not in dir(int) # [26978 refs] # >>> # [26978 refs] # >>> class Foo(object): # ... def __init__(self): # ... self.x = 17 # ... self.y = "blah" # ... self.z = 8.2 # ... # [27029 refs] # >>> x = Foo() # [27039 refs] # >>> assert "x" in dir(x) # instance # [27039 refs] # >>> assert "y" in dir(x) # instance # [27039 refs] # >>> assert "z" in dir(x) # instance # [27039 refs] # >>> assert "__init__" in dir(x) # class # [27039 refs] # >>> assert "__getitem__" in dir(x) # bases # Traceback (most recent call last): # File "", line 1, in # AssertionError # [27072 refs] # >>> # [27072 refs] # >>> class CustomDir(object): # ... def __dir__(self): # ... return ["kan", "ga", "roo"] # ... # [27124 refs] # >>> x = CustomDir() # [27117 refs] # >>> assert dir(x) == ["ga", "kan", "roo"] # [27117 refs] # >>> # [27117 refs] # >>> class DirNotList(object): # ... def __dir__(self): # ... return 7 # ... # [27161 refs] # >>> x = DirNotList() # [27161 refs] # >>> try: # ... dir(x) # ... except TypeError: # ... pass # ... else: # ... raise AssertionError # ... # [27161 refs] # >>> class DirNotCallable(object): # ... __dir__ = 7 # ... # [27188 refs] # >>> x = DirNotCallable() # [27188 refs] # >>> try: # ... dir(x) # ... except TypeError: # ... pass # ... else: # ... raise AssertionError # ... # [27188 refs] # >>> ################################################################################