]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
getattr() is now built-in; no longer need a class to simulate varargs.
authorGuido van Rossum <guido@python.org>
Thu, 2 Apr 1992 10:37:02 +0000 (10:37 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 2 Apr 1992 10:37:02 +0000 (10:37 +0000)
Lib/lib-old/newdir.py
Lib/newdir.py

index 4994bf9100f032b04c34890bcbb5db259ba22bf6..26a7df0c1b60e5c228bd4b695ecd9f1c923a8c5a 100644 (file)
@@ -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__)
index 4994bf9100f032b04c34890bcbb5db259ba22bf6..26a7df0c1b60e5c228bd4b695ecd9f1c923a8c5a 100644 (file)
@@ -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__)