класс для вычисления площади сферы Python - PullRequest
0 голосов
/ 24 апреля 2019

Я искал код для расчета площади сферы и заметил, что они использовали _ eq _. Я знаю, что он используется для проверки равенства, но мне интересно, зачем это нужно в этом примере?


class Point3d:
......

    def distance_from_origin(self):
        temp_x = self.x ** 2
        temp_y = self.y ** 2
        temp_z = self.z ** 2
        return ((temp_x) + (temp_y) + (temp_z)) ** 0.5 

    def area_of_sphere(self):
        return (4 * math.pi * (self.distance_from_origin())**2)

    def __eq__(self, object):
        if self.x == object.x and self.y == object.y and self.z == object.z:
            return True
        else:
            return False

    def __str__(self):
        return str(self.x) + " , " + str(self.y) + " , " + str(self.z)


Ответы [ 2 ]

3 голосов
/ 24 апреля 2019

area_of_sphere не должно быть там вообще. Это противоречит самой идее иметь класс.

Метод Point.__eq__ работает так, что вы можете написать

p1 = Point(...)
p2 = Point(...)

if p1 == p2: ...

в противном случае поведение по умолчанию == будет проверять, являются ли они одним и тем же объектом, и возвращает false.

0 голосов
/ 25 апреля 2019

Я подозреваю, что это требование унифицированного API, который систематически включает в себя оператор равенства, а также форматировщик строк.

Они абсолютно бесполезны для вычисления области.Можно даже задаться вопросом, нужен ли вообще класс для такой элементарной формулы.(Кстати, есть печальная потеря эффективности, вызванная тем, что вы берете квадратный корень, а затем возвращаете квадрат.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...