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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software