Olá, pessoal! Fiquei com dúvida se, para usar o property, é necessário deixar o atributo privado, também ou apenas dentro do método. Por exemplo, na aula, o prof. nos passa algo, mais ou menos, assim:
class Pessoa:
    def __init__(self, nome):
        self.__nome = nome
    @property
    def nome(self):
        return self.__nome
    @nome.setter
    def nome(self, nome):
        self.__nome = nome    Mas, ao pesquisar alguns códigos na internet, vi que as pessoas não deixam o atributo em si privado, apenas nos métodos acessores, assim:
class Pessoa:
    def __init__(self, nome):
        self.nome = nome
    @property
    def nome(self):
        return self.__nome
    @nome.setter
    def nome(self, nome):
        self.__nome = nome    Há diferença dessa forma? Também vi utilizarem apenas um underscore, em vez de dois, dá na mesma?
Outras 2 dúvidas: pelo visto, diferentemente de outras linguagens em OO, recomenda-se mais utilizar property do que get e set em python, correto? E alguém poderia me explicar por que o código retorna erro quando utilizamos property sem declarar como privado, no método? Queria saber o que ocorre "por baixo dos panos", o que não foi explicado.
Obs: embora tenha ficado com essas dúvidas, as aulas do Nico são show, desde as que fiz da formação Java. Parabéns ao instrutor pela didática :)