По п.1 - т.е. сначала он ищет, где может, и если не найдет - тогда создает. Просто я думал что self._p - сразу создает переменную экземпляра, если ее нет.
По п.2 - про
@property - уже немного освоил - собственно поэтому и спросил, в статьях и книжках по питону и классам,как то на этом не акцентируется внимание. Если поля класса только условно приватны - то может тут так и не принято закрываться?