axe
если объект приватный, то значит он должен быть доступен только внутри класса, так?
Не совсем так. В питоне приватные атрибуты существую для того, чтобы избежать случайных конфликтов. То есть, если ты наследуешься от какого-то класса и создаешь в нем какой-то атрибут, то даже если ты ему случайно (потому как не знаешь, да и не должен знать, имена приватных атрибутов родителя) даёшь такое же имя, как в родительском классе, то на самом деле это будут разные атрибуты. Задумка замечательная, но, к сожалению, реализация подкачала: если по каким-то причинам имена классов совпадут (например, в модуле ConcretePlugin класс Plugin наследуется от класса Plugin, определённого в модуле Base - вполне распространённая практика), то конфликт всё же возникнет.