Я очень любительский ученик Python, и недавно я начал изучать концепцию классов. Я понимаю концепцию классов (очень) грубо, но я не могу понять, почему я не могу просто написать некоторые функции вместо написания класса?
Например, (я изучаю из Interactive python) одно из заданий (которое я должен писать с помощью класса)
-
Добавьте метод
distanceFromPoint
, который работает аналогичноdistanceFromOrigin
, за исключением того, что он принимаетPoint
в качестве параметра и вычисляет расстояние между этой точкой и я. -
Добавьте метод
reflect_x
вPoint
, который возвращает новыйPoint
, который является отражением точки относительно оси x. Например,Point(3, 5).reflect_x()
-(3, -5)
.
Они написали код, используя следующие классы:
import math
class Point:
""" Point class for representing and manipulating x,y coordinates. """
def __init__(self, initX, initY):
""" Create a new point at the given coordinates. """
self.x = initX
self.y = initY
def getX(self):
return self.x
def getY(self):
return self.y
def distanceFromOrigin(self):
return ((self.x ** 2) + (self.y ** 2)) ** 0.5
def distanceFromPoint(self, otherP):
dx = (otherP.getX() - self.x)
dy = (otherP.getY() - self.y)
return math.sqrt(dy**2 + dx**2)
p = Point(3, 3)
q = Point(6, 7)
print(p.distanceFromPoint(q))
Почему я должен использовать класс, когда могу писать их просто так:
def distanceFromPoint(p,q): # they are tuples
y = (p[0]-q[0])**(2)+(p[1]-q[1])**(2)
return y**(1/2)
def reflectx(p):
return (p[0],-p[1])
p = (3,3)
q = (6,7)