Issue1376

classification
Title: 'name in dir(item)' holds, but 'getattr(item, name)' fails
Type: behaviour Severity: normal
Components: Core Versions: 25rc4
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: boisgera
Priority: Keywords:

Created on 2009-06-15.10:22:54 by boisgera, last changed 2009-06-15.10:22:54 by boisgera.

Messages
msg4813 (view) Author: (boisgera) Date: 2009-06-15.10:22:53
It seems natural that when 'name in dir(item)' holds, 'getattr(item,
name)' will work. The function inspect.classify_class_attrs for example
requires this property.

AFAICT, this invariant is violated when item is a Java class that
defines some 'getXXX' methods: 'XXX' will appear in dir(Class) but
getattr(Class, 'XXX') won't work. For example:

    >>> from java.lang import *
    >>> "class" in dir(String) # generated from getClass
    True
    >>> getattr(String, "class")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: instance attr: class
    >>> "bytes" in dir(String) # generated from getBytes
    True
    >>> getattr(String, "bytes")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: instance attr: bytes
History
Date User Action Args
2009-06-15 10:22:54boisgeracreate