A developer is writing a Python module. The module is intended to have one “public” class – a class that is intended for users of the module – called PublicAPI . Helper is supposed to only be used by the developer of the module – a “private” API. In Python, the convention for declaring private names is to prefix them with _ . In both cases, consumers are inclined to reach for more private names (because there’s no apparent consequence for doing so), making this problem worse.