Não, o @property
serve pra você retornar um valor ao usar leilao.lances
. O @property
é a forma pythonica de fazer um getter
no python.
Oself.leilao.lances.append(lance)
vai adicionar o lance na lista original. Na hora de você retornar a lista pro usuario ao invés de retornar a lista original você retorna uma copia rasa dela o que significa que não vai ser o mesmo objeto de lista mas os itens dentro da lista copiada ainda vão ser os mesmos objetos na memoria.
livros_yan = [['Banco MySQL'], ['Certificação PHP', 'TDD PHP'], ['HTML5 e CSS3']]
livros_pedro = livros_yan[:]
print('pedro:',livros_pedro,'\n')
>>>pedro: [['Banco MySQL'], ['Certificação PHP', 'TDD PHP'], ['HTML5 e CSS3']]
# se você adiciona algo novo na copia não vai adicionar na original
# se você adicionar algo novo na original tambem nao vai adicionar na copia
livros_games = ['Jogos iOS']
livros_pedro.append(livros_games)
print('yan:',livros_yan)
print('pedro:',livros_pedro,'\n')
>>>yan: [['Banco MySQL'], ['Certificação PHP', 'TDD PHP'], ['HTML5 e CSS3']]
>>>pedro: [['Banco MySQL'], ['Certificação PHP', 'TDD PHP'], ['HTML5 e CSS3'], ['Jogos iOS']]
# mas os elementos que elas compartilham sao iguais em ambas
# e se você remover de uma vai sumir da outra tambem
livro_php = 'Certificação PHP'
livros_yan[1].remove(livro_php)
print('yan:',livros_yan)
print('pedro:',livros_pedro)
>>>yan: [['Banco MySQL'], ['TDD PHP'], ['HTML5 e CSS3']]
>>>pedro: [['Banco MySQL'], ['TDD PHP'], ['HTML5 e CSS3'], ['Jogos iOS']]
Tem varias vantagens e desvantagens em relação a cada maneira de se copiar uma lista, se você quiser saber mais leia esse artigo da alura que explica melhor, eu peguei parte dos exemplos de lá inclusive :)
Se quiser saber mais sobre getters e setters tem esse site (em ingles) que explica muito bem.