diff options
Diffstat (limited to 'python/examples/kaitai/__main__.py')
| -rwxr-xr-x | python/examples/kaitai/__main__.py | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/python/examples/kaitai/__main__.py b/python/examples/kaitai/__main__.py index 237fc180..2accd2e5 100755 --- a/python/examples/kaitai/__main__.py +++ b/python/examples/kaitai/__main__.py @@ -42,19 +42,19 @@ def dump(obj, depth=0): indent = ' '*depth if isinstance(obj, kaitaistruct.KaitaiStruct): - for fieldName in dir(obj): - if hasattr(obj, fieldName): - getattr(obj, fieldName) - - for fieldName in dir(obj): - #print('considering field: %s (hasattr returns: %d)' % (fieldName, hasattr(obj, fieldName))) - if fieldName != '_debug' and fieldName.startswith('_'): - continue - if fieldName in dump_exceptions: + fieldNames = [] + for candidate in dir(obj): + if candidate != '_debug' and candidate.startswith('_'): continue - if not hasattr(obj, fieldName): + if candidate in dump_exceptions: continue + try: + if getattr(obj, candidate, False): + fieldNames.append(candidate) + except Exception: + pass + for fieldName in fieldNames: subObj = getattr(obj, fieldName) if type(subObj) == types.MethodType: |
