AttributeError: у объекта 'Cal' нет атрибута 'area' - PullRequest
0 голосов
/ 16 октября 2018
class Cal(object):
    pi = 3.142

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

        def area():
            return self.pi * (self.radius**2)


a = Cal(32)
a. area()

Я получаю сообщение об ошибке при запуске ==== Traceback (последний вызов был последним): файл "K: / Py Projects / mini / prac.py", строка 12, в.area (32) AttributeError: у объекта 'Cal' нет атрибута 'area'

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Сначала вы определили area() внутри __init__().Это делает area() доступным только оттуда.Убедитесь, что вы указали его на уровне класса.

Кроме того, вы не указали параметр self в area().Таким образом, вы не сможете получить доступ к нему изнутри метода.

Исправленный код будет:

class Cal(object):
    pi = 3.142

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

    def area(self):
        return self.pi * (self.radius**2)


a = Cal(32)
a. area()
0 голосов
/ 16 октября 2018

Вы определили функцию area() внутри вашей функции инициализатора (__init__()), которая делает ее локальной функцией в этой области, а не методом Cal.

Поместите его снаружи.

РЕДАКТИРОВАТЬ: вам также необходимо добавить self в качестве аргумента для area().

...