2017-02-08 8 views
0

Я просто начал изучать OOPS в питоне, и когда я пытаюсь запустить следующий код, я получаю ошибку атрибута «экземпляр Область не имеет атрибута 'GetLength»Нет атрибута для класса в Python

, а также пожалуйста скажите мне, как принимать входные данные от пользователя в основной программе, но вычисление происходит в классе Area, например, берут длину и ширину ввода от пользователя и не устанавливаются в самой программе.

Надеюсь, я сделал себе достаточно ясно.

class Area: 
    def __init__ (self , w , l): 
     self.width = w 
     self.length = l 
    def rectangle_area (self): 
     return self.width * self.length 

    def GetLength (self , len): 
     self.length = len 

    def GetWidth (self , w): 
     self.width = w 

    def PrintLength (self): 
     return self.length 

RecArea = Area(5 , 5) 
RecArea.GetLength(10) 
print (RecArea.rectangle_area()) 
input() 
+2

Уберите свой код, никаких ошибок ... Вы уверены, что указали правильный исходный код на ошибку, которую вы получаете? – MooingRawr

+1

Чтобы ответить на ваш второй вопрос, возможно, прочитайте в каком-то базовом учебнике Python о том, как вводить ввод и передавать его функции/классу ... Это простая вещь и должна была быть рассмотрена перед классами, imo ... – MooingRawr

+0

@Uriel Эли Вероятно, потому что объекты получают длину из контекста? @ Khayyam. Такой метод в основном называется setLength, поскольку код контекста задает длину объекта. И если вы только начинаете, это также означает, что объекты и функции начинаются с строчных букв и классов с прописными буквами. –

ответ

0

Вы смешиваете вкладки и пробелы. GetLength фактически определен вложенным внутри другого метода, поэтому объекты Area фактически не имеют метода GetLength.

Не смешивайте язычки и пробелы. Включите «show whitespace» в вашем редакторе, чтобы сделать эти проблемы более заметными и получить лучший редактор, если ваш редактор не поддерживает это. Запуск Python с флагом -tt может помочь поймать кучу этих ошибок.


Помимо откровенной ошибки, эти GetLength и GetWidth методов не имеют никакого смысла. Они не геттеры; они сеттеры. Кроме того, они нарушают стандартные соглашения о капитализации Python, и вам не нужны геттеры или сеттеры для этих атрибутов.

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

  • Нет связанных вопросов^_^