`digital_pins` can also be an attribute defined on `__init__`, or even a read-only property. It's strange that `self.pins` is a dict and an attribute at the same time that `self.digital_pins` is a [bounded] method and returns a list.