2015-12-30 3 views
3

Это сводит меня с ума. Я хочу, чтобы программа напечатала имя «Фрэнк». Тем не менее, я получаю сообщение об ошибке «AttributeError: объект« Люди »не имеет атрибута« called ». Я искал в Интернете, и насколько я могу судить, я все делаю правильно, но так как я получаю ошибку, очевидно, что нет.Класс не распознает атрибут?

Я использую Python 2.

class People(object): 

    def __init__(self, name): 
     self.name = name 

    def called(self): 
     return self.name 

frank = People("Frank") 

print frank.called() 

Что я делаю неправильно? Added screenshot for proof

+1

Ваш код отлично подходит для меня. – timgeb

+1

[Работает на моей машине.] (Http://ideone.com/nvVvrb) – Kevin

+3

В отступе Python входит часть синтаксиса - возможно, ваш метод 'call' определен вне класса, как автономная функция (или, возможно, как локальная функция к методу '__init__'. Пожалуйста, дважды проверьте свой отступ. –

ответ

9

Похож на проблему с отступом.

enter image description here

Точки являются пространствами, стрелки вкладки.

Даже если вкладки могут посмотреть, так как они эквивалентны четырем пробелам в текстовом редакторе, Python может не интерпретировать их как таковые. В результате вы никогда не должны смешивать вкладки и пробелы. Используйте только тот или иной. Предпочтительно пространства.


Я вижу, что вы используете Notepad ++. Для удобства отладки вы можете настроить его для отображения вкладок в виде стрелок, выбрав «Просмотр -> Показать символ» и «Показать белое пространство и табуляцию». Вы также можете настроить его, чтобы вставить четыре пробела вместо символа табуляции, когда вы нажимаете клавишу табуляции, с помощью «Настройки» -> «Настройки» -> «Языковое меню/вкладка» -> «Заменить по пробелам».

+0

ДА! Это была именно эта проблема. и вкладки. Изменили их все на вкладках - проблема решена. (Я пойду, почему места предпочтительнее). –

+0

@ The6thSense Спасибо, я намереваюсь. SO заставляет меня подождать несколько минут, прежде чем мне позволено это сделать. –

+4

@MarijkeVonk Короткий ответ на вопрос о том, почему пробелы предпочтительнее: разные редакторы будут отображать вкладки как разные ширины, но пространство всегда является пространством. Это касается согласованности и не удивляет пробелами. – SethMMorton

Смежные вопросы