Então Mário,
Boa pergunta! Não tinha pensado nisso.
Testando aqui, eu coloquei o método "Title" dentro do construtor, deste jeito:
class Conta:
def __init__(self, numero, titular, saldo, limite = 1000.0):
print("Construido objeto ... {}".format(self))
self.__numero = numero
self.__titular = titular.title()
self.__saldo = saldo
self.__limite = limite
self.__tarifaTransferencia = 8.0
Mesmo dentro da declaração de vaiável privada da classe, o nome fica em maiúsculo também, então não tem como dar chabú, veja:
Os comando foram:
from conta import Conta
conta3 = Conta(1241, "fabio", 100.0, 1000.0)
conta3.extrato()
conta3._Conta__titular
Eps... Se o nome do titular for renomeado no "titular.setter"... bau-au... é preciso colocar o método "Title" lá também:
@titular.setter
def titular(self, titular):
self.__titular = titular.title()
AGORA VAMOS TRAPACEAR... eu quero que o "@property" fique em maiúsculo e a variável "private" fique em minúsculo, desta forma:
Retirei o método "Title" do construtor e do "titular.setter", coloquei no "@property" e modifiquei extrato para pegar a variável pelo property e NÃO pela variável privada. Desta forma:
@property
def titular(self):
return self.__titular.title()
def extrato(self):
#print("Saldo é {} do titular {}".format(self.__saldo, self.__titular))
print("Saldo é {} do titular {}".format(self.__saldo, self.titular))
Espero ter ajudado e se ajudei, não esqueça de fechar o tópico e me pontuar... adoro esses pontinhos.
[]'s,
Fabio I.