dir vs __dict__

  • dir: return a list including instance and class attributes

  • __dict__: return a dictionary which are instance attributes and its value.

Example

class C:
    var = 1
    def __init__(self):
        print(self.var)
        self.attr = "value"
>>> obj=C()
1

>>> dir(obj)
[....
...
 'var',
 'attr']

>>> obj.__dict__
{'attr': 'value'}

>>> obj.var = 3
>>> obj.__dict__
{'attr': 'value', 'var': 3}

Note

Here the assignment of obj.var make var becomes an instance attribute.