diff options
Diffstat (limited to 'Lib/lib-old/newdir.py')
-rw-r--r-- | Lib/lib-old/newdir.py | 110 |
1 files changed, 55 insertions, 55 deletions
diff --git a/Lib/lib-old/newdir.py b/Lib/lib-old/newdir.py index 937c49e..356becc 100644 --- a/Lib/lib-old/newdir.py +++ b/Lib/lib-old/newdir.py @@ -5,69 +5,69 @@ # the current local name space by default def listattrs(x): - try: - dictkeys = x.__dict__.keys() - except (AttributeError, TypeError): - dictkeys = [] - # - try: - methods = x.__methods__ - except (AttributeError, TypeError): - methods = [] - # - try: - members = x.__members__ - except (AttributeError, TypeError): - members = [] - # - try: - the_class = x.__class__ - except (AttributeError, TypeError): - the_class = None - # - try: - bases = x.__bases__ - except (AttributeError, TypeError): - bases = () - # - total = dictkeys + methods + members - if the_class: - # It's a class instace; add the class's attributes - # that are functions (methods)... - class_attrs = listattrs(the_class) - class_methods = [] - for name in class_attrs: - if is_function(getattr(the_class, name)): - class_methods.append(name) - total = total + class_methods - elif bases: - # It's a derived class; add the base class attributes - for base in bases: - base_attrs = listattrs(base) - total = total + base_attrs - total.sort() - return total - i = 0 - while i+1 < len(total): - if total[i] == total[i+1]: - del total[i+1] - else: - i = i+1 - return total + try: + dictkeys = x.__dict__.keys() + except (AttributeError, TypeError): + dictkeys = [] + # + try: + methods = x.__methods__ + except (AttributeError, TypeError): + methods = [] + # + try: + members = x.__members__ + except (AttributeError, TypeError): + members = [] + # + try: + the_class = x.__class__ + except (AttributeError, TypeError): + the_class = None + # + try: + bases = x.__bases__ + except (AttributeError, TypeError): + bases = () + # + total = dictkeys + methods + members + if the_class: + # It's a class instace; add the class's attributes + # that are functions (methods)... + class_attrs = listattrs(the_class) + class_methods = [] + for name in class_attrs: + if is_function(getattr(the_class, name)): + class_methods.append(name) + total = total + class_methods + elif bases: + # It's a derived class; add the base class attributes + for base in bases: + base_attrs = listattrs(base) + total = total + base_attrs + total.sort() + return total + i = 0 + while i+1 < len(total): + if total[i] == total[i+1]: + del total[i+1] + else: + i = i+1 + return total # Helper to recognize functions def is_function(x): - return type(x) == type(is_function) + return type(x) == type(is_function) # Approximation of builtin dir(); but note that this lists the user's # variables by default, not the current local name space. def dir(x = None): - if x is not None: - return listattrs(x) - else: - import __main__ - return listattrs(__main__) + if x is not None: + return listattrs(x) + else: + import __main__ + return listattrs(__main__) |