Cqd: Colour my __dir__ please

(github.com)

24 points | by jasepickup 2 days ago

3 comments

  • kstrauser 5 hours ago
    Pro-tip: put things like this in your ~/.pythonrc so that they're loaded when you start the REPL. I have a few things in mine, like configuring readline, a couple of functions to dump objects as JSON or YAML, and imports for pprint and datetime so that they're all there when I'm doing interactive stuff.
  • zahlman 2 hours ago
    I think it would be a good idea to consider name-mangled attributes (https://docs.python.org/3/tutorial/classes.html#private-vari... ; https://stackoverflow.com/questions/7456807) separately:

        >>> class x:
        ...   def __foo(self): pass
        ... 
        >>> dir(x) # word-wrapped manually to protect your eyes
        ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__',
         '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__',
         '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__',
         '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
         '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
         '__weakref__', '_x__foo']
    
    `__foo` is probably not meant for external use, but the real reason to use the leading double underscore is to invoke that name mangling and thus avoid name collisions in subclasses. Some people do still use this feature. (These days, I barely even use inheritance.)

    Perhaps it could use the same colour for the `_x` as for other single-underscore names, and a fourth colour for the `__foo` part.

  • jasepickup 2 days ago
    I found myself wanting a quick way to navigate dir() from the terminal. This is a tiny, simple python package that helps in this regard.