1
resposta

'str' object has no attribute 'self'

O código abaixo é o meu "model.py":

# -*- coding: UTF-8 -*-

class Perfil(object):


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

    def imprimir(self):
        print 'nome: %s, telefone: %s, empresa: %s' % (self.nome, self.telefone, self.empresa)

No terminal faço os seguintes comandos:

>>>from model import Perfil
>>>meu_perfil = Perfil('dudu', '123', 'UFMG')
>>>meu_perfil.imprimir()

E obtenho o seguinte erro:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "model.py", line 12, in imprimir
    print 'nome: %s, tel: %s, empresa: %s' % (self.nome, self.telefone, self.empresa)
AttributeError: 'str' object has no attribute 'self'

O que tem de errado no meu código?

1 resposta

Oi Eduardo, em qual versão do python você está rodando no teminal? Seu código funciona no pyhton2 mas não no python3 - no python3 dá erro já que 'print()' é uma função e deve ter argumentos.

Para rodar no python3 modifique sua função imprimir para:

print('nome: %s, tel: %s, empresa: %s' % (self.nome, self.telefone, self.empresa))

ou

print('nome: {}, tel: {}, empresa: {}'.format(self.nome, self.telefone, self.empresa))