Contadores de Instancias [RESOLVIDO]

1. Contadores de Instancias [RESOLVIDO]

Angelo
aazevedo1984

(usa Slackware)

Enviado em 19/01/2009 - 17:41h

Estou vendo python a muito pouco tempo, pois todos dizem q e mais facil dq java, porem ainda acho java muito mais facil e pratico em certos pontos, por exemplo estou tentando apenas instanciar uma classe Pessoa contendo nome idade q sao fornecidos pelo usuario e um id q deve comecar em 0 e ser acrescentado em 1 a cada vez q a classe e instanciada, eis o codigo

class Pessoa():
__IDT__=0
def __init__(self,nom="",idad=0):

Pessoa.__IDT__=Pessoa.__IDT__+1

self.id=Pessoa.__IDT__
self.nome=nom
self.idade=idad

def getIdade(self):
return self.idade
def setIdade(self,idade):
self.idade=idade
def setNome(self,nome):
self.nome=nome
def getNome(self):
return self.nome
def getID(self):
return self.id
# fim da classe

func=Pessoa()

func.setIdade(18)
func.setNome("teste")

print "%s" % func.getNome()
print "%d" % func.getIdade()
print "ID func: %d" % func.getID()

func2=Pessoa("Eu",20)
print "%s" % func2.getNome()
print "%d" % func2.getIdade()
print "ID func2: %d" % func.getID()

o resultado fica

teste
18
ID func: 1
Eu
20
ID func2: 1

eu gostaria q fosse

teste
18
ID func: 1
Eu
20
ID func2: 2

Consigo fazer isto em java sem o menor problema porem aq nao funciona por nada, e pelo q entendi somente preciso escrever self.qualquerCoisa e esta qualquerCoisa passa a existir como atributo/variavel de acordo com oq ela recebe. Alguem sabe como posso corrigir este codigo para algo q funcione da maneira q eu espera q acontecesse?


  


2. MELHOR RESPOSTA

Denis Doria
thuck

(usa Debian)

Enviado em 20/01/2009 - 00:53h

Bem, para começar usar set e get em python é uma péssima idéia, vc não está programando em java, desencana dessas coisas.

class Pessoa(object):
__id__ = 0
def __init__(self,nome="",idade=0):
self.id = Pessoa.__id__
Pessoa.__id__+=1
self.nome=nome
self.idade=idade

func=Pessoa(idade=18,nome="teste")

print "%s" % func.nome
print "%d" % func.idade
print "ID func: %d" % func.id

func2=Pessoa("Eu",20)
print "%s" % func2.nome
print "%d" % func2.idade
print "ID func2: %d" % func2.id


3. Valew cara

Angelo
aazevedo1984

(usa Slackware)

Enviado em 20/01/2009 - 14:20h

Valew pela ajuda, funcionou, mas ainda achando estranho oq eu fiz nao ter funcionado comecei a olhar o codigo com mais calma, nada como um bom dia de sono e percebi q ate funciona oq eu fiz, mas na ultima chamada eu estava pedindo func.getID() ao inves de func2.getID(), sou muito lerdo mesmo, mas valew cara vc facilitou muito o codigo nao sabia q poderia ser assim tao simples, so tenho q me acostumar com a ideia agora






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts