2014-10-31 2 views
0

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

Тем не менее, я получаю Typeerror, который говорит, что объект 'function' не имеет атрибута 'getitem'. Вот мой код:

def Rectangle(width, height): 
    area = Rectangle[width] * Rectangle[height] 

a = Rectangle(5, 7) 
print(a.area) 

Теперь я знаю, что есть более простые способы сделать это, но задача состоит в том, чтобы сделать это с помощью функций и классов. Мне интересно, где я ошибаюсь?

+0

Я думаю, что вам нужен класс, а не функция – inspectorG4dget

ответ

1

Вам необходимо создать class. Я начала работы:

class Rectangle: 
    def __init__(self, width, height): 
     self.width = width 
     self.height = height 

    @property 
    def area(self): 
     return self.width * self.height 

То, что вы в настоящее время является функцией. Но, видя, что каждый экземпляр вашего объекта должен иметь свои собственные атрибуты, вам нужно создать тип для их хранения.

+0

Это имеет смысл. Спасибо. Что делает atproperty? –

+0

@HunterWatkins Видя, как область вычисляется в зависимости от ширины и высоты, мы не хотим иметь ее как постоянное значение. Свойство '@ property 'позволяет нам получить доступ к нему как обычно, сохраняя его пропорционально другим его атрибутам. –

+0

Вау, это полезно! Спасибо. У меня буквально были первые 2 строки вашего кода, написанные до того, как я опубликовал это, потому что я решил, что должен использовать класс, но я поклялся, что могу сделать это только с помощью функции. Но я был неправ. В очередной раз благодарим за помощь! @AlexThornton –

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