diff options
-rw-r--r-- | Lib/lib-old/newdir.py | 34 | ||||
-rw-r--r-- | Lib/newdir.py | 34 |
2 files changed, 30 insertions, 38 deletions
diff --git a/Lib/lib-old/newdir.py b/Lib/lib-old/newdir.py index 4994bf9..26a7df0 100644 --- a/Lib/lib-old/newdir.py +++ b/Lib/lib-old/newdir.py @@ -1,13 +1,9 @@ -# New dir() function and other attribute-related goodies +# New dir() function -# This should become a built-in function -# -def getattr(x, name): - return eval('x.'+name) # This should be the new dir(), except that it should still list # the current local name space by default -# + def listattrs(x): try: dictkeys = x.__dict__.keys() @@ -59,21 +55,21 @@ def listattrs(x): i = i+1 return total + # Helper to recognize functions -# + def is_function(x): return type(x) == type(is_function) -# Approximation of builtin dir(); this lists the user's + +# Approximation of builtin dir(); but note that this lists the user's # variables by default, not the current local name space. -# Use a class method to make a function that can be called -# with or without arguments. -# -class _dirclass: - def dir(args): - if type(args) == type(()): - return listattrs(args[1]) - else: - import __main__ - return listattrs(__main__) -dir = _dirclass().dir + +def dir(*args): + if len(args) > 0: + if len(args) == 1: + args = args[0] + return listattrs(args) + else: + import __main__ + return listattrs(__main__) diff --git a/Lib/newdir.py b/Lib/newdir.py index 4994bf9..26a7df0 100644 --- a/Lib/newdir.py +++ b/Lib/newdir.py @@ -1,13 +1,9 @@ -# New dir() function and other attribute-related goodies +# New dir() function -# This should become a built-in function -# -def getattr(x, name): - return eval('x.'+name) # This should be the new dir(), except that it should still list # the current local name space by default -# + def listattrs(x): try: dictkeys = x.__dict__.keys() @@ -59,21 +55,21 @@ def listattrs(x): i = i+1 return total + # Helper to recognize functions -# + def is_function(x): return type(x) == type(is_function) -# Approximation of builtin dir(); this lists the user's + +# Approximation of builtin dir(); but note that this lists the user's # variables by default, not the current local name space. -# Use a class method to make a function that can be called -# with or without arguments. -# -class _dirclass: - def dir(args): - if type(args) == type(()): - return listattrs(args[1]) - else: - import __main__ - return listattrs(__main__) -dir = _dirclass().dir + +def dir(*args): + if len(args) > 0: + if len(args) == 1: + args = args[0] + return listattrs(args) + else: + import __main__ + return listattrs(__main__) |