Roberto, talvez você esteja se perdendo nos arquivos, pois seu código funciona perfeitamente. Será que você criou duplicado e está importando o errado?
Veja os passos que fiz para sue código funcionar:
1) Criei o arquivo pessoa.py
com o código idêntico ao seu:
class Pessoa(object):
def __init__(self, nome, peso, altura):
self.nome = nome
self.peso = peso
self.altura = altura
def imprimirImc(self):
imc = self.peso / (self.altura ** 2);
print 'IMC de %s: %s' % (self.nome, imc);
2) Depois, fui no terminal do python e importei seu arquivo:
from pessoa import Pessoa
3) Em seguida, ainda no terminal, criei um objeto:
pessoa = Pessoa("Ronaldo", 105, 1.78)
4) Por fim, chamei o método para imprimir o IMC:
pessoa.imprimirImc()
E o resultado foi :
MC de Ronaldo: 33.1397550814
Novamente, se você está tento algum erro, é na hora de importar o arquivo e chamar o método. É esse passo que você não passou para nós, inclusive tenha certeza de importar corretamente o arquivo.
Então, novamente peço o código que você instancia a classe pessoa. Onde está?
Se você estiver fazendo (forma errada, que não vai funcionar, típico erro de lógica de programação):
pessoa = Pessoa("Ronaldo", "105","1.78")
Terá o mesmo erro que você postou para nós! Então, como você infelizmente ainda não nos passou como você está chamando o método, temos que criar hipóteses e uma é que você está errando passando os números como script, como no exemplo acima.