Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Dúvida no Ex. 4 da Aula 8 - Orientação a objetos e o conceito de classe

Criei o arquivo models.py e no terminal chamei o arquivo from models import Perfil e quando executo perfil = Perfil('Flavio', 'nao informado', 'Caelum')

recebo esta mensagem:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: this constructor takes no arguments
>>>
9 respostas

Posta o código do seu arquivo models.py

João mandou bem, poste seu código do seu arquivo models.py. Aliás esse é o procedimento em qualquer fórum, não apenas o alura.

Oi Roberto, precisamos do codigo da sua classe Perfil.

O código é esse.

-- coding:utf-8 --

class Perfil(object):
    'Classe para moldar perfis de usuários'

    def __init__(self, nome, telefone, empresa):
        self.nome = nome
        self.telefone = telefone
        self.empresa = empresa

Roberto, seu código esta correto. O erro que você recebe é quando você não passa a quantidade de parâmetros que o construtor está preparado para receber (com exceção do self).

Minha hipótese é que você tenha declarado a classe Perfil em dois lugares diferentes e está importando aquela que possui construtor inválido. Para ter certeza, faça o seguinte:

Em uma pasta em separado, crie o arquivo models.py e nele adicione seu código. O exemplo abaixo é idêntico ao seu código:

# -- coding:utf-8 --

class Perfil(object):
    'Classe para moldar perfis de usuários'

    def __init__(self, nome, telefone, empresa):
        self.nome = nome
        self.telefone = telefone
        self.empresa = empresa

Abra o terminal do python **dentro dess pasta que você criou de teste.

Depois, abra o console do Python. No console, importe a classe e instancie o objeto:

>>> from models import Perfil
>>> perfil = Perfil('Flavio', 'nao informado', 'Caelum')

Não haverá erro algum.

Então, peço que você verifique se há mais de uma declaração da classe Perfil e se você está importando o correto, isto é, aquele que está no código que você postou.

Aguardo seu feedback.

Criei um nova pasta e adicionei o código.

>>> from models import Perfil
>>> perfil = Perfil('Flavio', 'não informado', 'Caelum')
>>> perfil
<models.Perfil object at 0xb7198ecc>
>>> perfil1 = Perfil('Flavio', 'não informado', 'Caelum')
>>> perfil1
<models.Perfil object at 0xb7198f2c>
>>>

Funcionou! Veja que seu código está correto. Se dentro do contexto da sua aplicação está recebendo ainda aquele erro ou é porque o código que está lá é diferente do código que você postou para mim ou você tem declarado suas vezes a classe Perfil. Ou você havia alterado o arquivo models.py e não salvou.

Conseguiu se encontrar?

Eu testei os códigos e os dois deram como resultado:

Devo ter esquicido de salvar.

Tenho duvidas em javascript. Posso postar aqui ?

Obrigado.

solução!

Não é recomendado fazer isso. Se você tiver dúvida em JavaScript, crie um post em separado. Caso contrário você fritará a mente dos moderadores e ofuscará sua dúvida de alguém que saque de JavaScript, pois ele jamais imaginará que há uma pergunta de JavaScript dentro de um post sobre Python. Combinado?

Abraço