Hi, One of the things I love most about Python is the ability to quickly drill down into any object, to see what attributes it has, what functions it can call, and so on. (see below for a demonstration of what I'm talking about.) I am now learning to use Zope, and am becoming increasingly frustrated trying to figure out what various things provide. For instance, container.objectIds() shows a list of everything in the root directory... container.portal_url() shows the base url... ... and I'm sure that there are a dozen (or a hundred) other things that I can do with a container object. How do I find them? dir(container) doesn't work. It looks to me like the dir command doesn't work under Zope, probably for security reasons. Does Zope have anything analagous? If not, how *do* you find out what any given object can do? --Joel $ python Python 2.2 (#1, Feb 24 2002, 16:21:58) [GCC 2.96 20000731 (Mandrake Linux 8.2 2.96-0.76mdk)] on linux-i386 Type "help", "copyright", "credits" or "license" for more information.
import string print string <module 'string' from '/usr/lib/python2.2/string.pyc'> dir(string) ['_StringType', '__builtins__', '__doc__', '__file__', '__name__', '_float', '_idmap', '_idmapL', '_int', '_long', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'atof', 'atof_error', 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize', 'capwords', 'center', 'count', 'digits', 'expandtabs', 'find', 'hexdigits', 'index', 'index_error', 'join', 'joinfields', 'letters', 'ljust', 'lower', 'lowercase', 'lstrip', 'maketrans', 'octdigits', 'printable', 'punctuation', 'replace', 'rfind', 'rindex', 'rjust', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 'translate', 'upper', 'uppercase', 'whitespace', 'zfill'] dir (string.zfill) ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__name__', '__new__', '__reduce__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] string.zfill.__doc__ 'zfill(x, width) -> string\n\n Pad a numeric string x with zeros on the left, to fill a field\n of the specified width. The string x is never truncated.\n\n '