Ir para conteúdo
Fórum Script Brasil
  • 0

Iniciante: sobrecarga de construtor?


brunofin

Pergunta

Olá a todos! Sou programador Java e há alguns dias descobri o Python, gostei da linguagem e estou tentando aprender.

Estou brincando um pouco com a orientação a objeto do Python para ver o que eu aprendo, e tentei criar um construtor sobrecarregado e deu um erro na hora de executar.

Eu fiz o seguinte arquivo Pessoa.py contendo a classe Pessoa:

class Pessoa:
    nome = 0
    idade = 0
    rg = 0
    cpf = 0

    def __init__(self):
        self.setNome("")
        self.setIdade(0)
        self.setRg("")
        self.setCpf("")

    def __init__(self, nome, idade, rg, cpf):
        self.setNome(nome)
        self.setIdade(idade)
        self.setRg(rg)
        self.setCpf(cpf)

    def setNome(self, nome):
        self.nome = nome

    def getNome(self):
        return self.nome

    def setIdade(self, idade):
        self.idade = idade

    def getIdade(self):
        return self.idade

    def setRg(self, rg):
        self.rg = rg

    def getRg(self):
        return self.rg

    def setCpf(self, cpf):
        self.cpf = cpf

    def getCpf(self):
        return self.cpf

    def __str__(self):
        return ("Nome: " + self.getNome() + "\nIdade: " + str(self.getIdade()) +
            "\nRG: " + str(self.getRg()) + "\nCPF: " + str(self.getCpf()))
E o arquivo Main.py, que instancia o objeto:
import Pessoa

print "imprimindo p:\n"
p = Pessoa.Pessoa("jose", 23, "00", "11")
print p

print "imprimindo q:\n"
q = Pessoa.Pessoa()
print q
A saída desse código é a seguinte:
bruno@bruno-desktop:~/python/teste1$ python Main.py
imprimindo p:

Nome: jose
Idade: 23
RG: 00
CPF: 11
imprimindo q:

Traceback (most recent call last):
  File "Main.py", line 8, in <module>
    q = Pessoa.Pessoa()
TypeError: __init__() takes exactly 5 arguments (1 given)
bruno@bruno-desktop:~/python/teste1$

Existe como criar construtores sobrecarregados em Python? Se existe como eu faço? E aproveitando... Eu fiz os Gets e Sets na minha classe, mas eu não sei como tornar os atributos públicos ou privados. existe como fazer isso?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Nesse caso eu aconselho a usar apenas um construtor, com parâmetros default...

def __init__(self, nome="", idade=0, rg="", cpf=""):

self.setNome(nome)

self.setIdade(idade)

self.setRg(rg)

self.setCpf(cpf)

Eu não usaria monte de gets e setters, a não ser que houvesse, por exemplo, uma função pra verificar se o cpf é válido...

Editado por Wendell S S
Link para o comentário
Compartilhar em outros sites

  • 0
Olá a todos! Sou programador Java e há alguns dias descobri o Python, gostei da linguagem e estou tentando aprender.

Estou brincando um pouco com a orientação a objeto do Python para ver o que eu aprendo, e tentei criar um construtor sobrecarregado e deu um erro na hora de executar.

Alguém já conseguiu descobrir se é possível sobrecarga do construtor no Python? Também sou iniciante e nos lugares que procurei não tive nenhum exemplo deste.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...