Avoid doing a str(object) since in some cases it can result in very

large strings


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32134 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2005-02-18 04:50:41 +00:00
parent 6f25918850
commit 006f35560e

View File

@ -56,11 +56,11 @@ def getAttributeNames(object, includeMagic=1, includeSingle=1,
attrdict = getAllAttributeNames(object)
# Store the object's dir.
object_dir = dir(object)
for (str_obj, technique, count), attrlist in attrdict.items():
for (obj_type_name, technique, count), attrlist in attrdict.items():
# This complexity is necessary to avoid accessing all the
# attributes of the object. This is very handy for objects
# whose attributes are lazily evaluated.
if str(object) == str_obj and technique == 'dir':
if type(object).__name__ == obj_type_name and technique == 'dir':
attributes += attrlist
else:
attributes += [attr for attr in attrlist \
@ -97,10 +97,9 @@ def getAllAttributeNames(object):
# They always return true for hasattr().
# !!!
try:
# Yes, this can fail if object is an instance of a class with
# __str__ (or __repr__) having a bug or raising an
# exception. :-(
key = str(object)
# This could(?) fail if the type is poorly defined without
# even a name.
key = type(object).__name__
except:
key = 'anonymous'
# Wake up sleepy objects - a hack for ZODB objects in "ghost" state.