0
respostas

Hora da prática: criando classes, construtores e métodos

from __future__ import annotations
from typing import ClassVar

class ContaBancaria:
    def __init__(self, titular: str, saldo: float) -> None:
        self._titular: str = titular
        self._saldo: float = saldo
        self._ativo: bool = False

    @property
    def titular(self) -> str:
        return self._titular
    
    @property
    def saldo(self) -> float:
        return self._saldo
    
    @property
    def ativo(self) -> bool:
        return self._ativo
    
    def __str__(self) -> str:
        return(f"Titular: {self._titular.ljust(20)} | Saldo: {str(self._saldo).ljust(20)}")
    

    def status(self) -> str:
        return f"{self._titular} está no momento com a Conta Ativa" if self._ativo else f"{self._titular} está no momento com a Conta Inativa"
    
    def ativar_conta(self) -> None:
        self._ativo = True

    def saldo_conta(self) -> str:
        return f"{self._titular} possui R${self._saldo:.2f} na conta"
    
    def listar_dados(self) -> None:
        print (self)

class ClienteBanco:
    clientes: ClassVar[list["ClienteBanco"]] = []

    def __init__(self, nome: str, idade: int, cpf: str, cidade:str, profissao:str) -> None:
        self._nome: str = nome
        self._idade: int = idade
        self._cpf: str = cpf
        self._cidade: str = cidade
        self._profissao: str = profissao

        ClienteBanco.clientes.append(self)

    def __str__(self) -> None:
        return(f"Nome: {self._nome.ljust(20)} | Idade: {str(self._idade).ljust(20)} | Cpf: {self._cpf.ljust(20)} | Cidade: {self._cidade.ljust(20)} | Profissao: {self._profissao.ljust(20)}")
    
    @classmethod
    def listar_dados(cls) -> None:
        for cliente in cls.clientes:
            print(cliente)
        


def main() -> None:    
    pessoa1 = ContaBancaria("Rafaela", 1900.90)
    pessoa2 = ContaBancaria("Carlos", 1200.00)
    pessoa1.listar_dados()
    pessoa2.listar_dados()
    
    pessoa1.ativar_conta()
    print(pessoa1.status())
    print(pessoa1.saldo_conta())

    cliente1 = ClienteBanco("Eduardo", 20, "123.456.789-01", "Manaus", "Advogado")
    cliente2 = ClienteBanco("Rafa", 19, "987.654.321-01", "Manaus", "Estudante")
    cliente3 = ClienteBanco("Carlos", 19, "111.222.333-44", "Manaus", "Estagiário")   

    ClienteBanco.listar_dados()

if __name__ == "__main__":
    main()