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?