Ошибка типа: должно быть действительным числом, а не кружком - PullRequest
0 голосов
/ 30 июня 2018
import math as m
class Circle:
        def __init__(self,radius):
            self.radius = radius
            count = 0
        def area(r):
            k = m.pi * m.pow(r,2)
            return k

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

a = Circle(4)
a.area()
it throws an error like 
"   k = m.pi * m.pow(r,2)
TypeError: must be real number, not Circle"

Невозможно понять, как он рассматривает значение с плавающей точкой в ​​качестве экземпляра для круга.

Ответы [ 2 ]

0 голосов
/ 30 июня 2018
import math as m
DEFAULT_RADIUS = 0.5
class Circle(object):
    def __init__(self, radius=DEFAULT_RADIUS):
        self.radius = radius
        count = 0
    def area(self, r=None):
        if r is not None:
            self.radius = r
        k = m.pi * m.pow(self.radius, 2)
        return k
a = Circle(4)
a.area()
0 голосов
/ 30 июня 2018

Первый аргумент метода экземпляра - это ссылка на сам экземпляр (обычно называемый self) - вот откуда исходит Circe. Вы не должны передавать радиус, вы должны использовать член, который у вас есть:

def area(self):
    k = m.pi * m.pow(self.radius, 2)
    return k
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...