Por que devo usar classes em python?
Sou um aprendiz muito amador de Python e recentemente comecei a aprender o conceito de classes. Eu posso entender o conceito de classe (muito) grosso modo, mas não consigo entender por que não posso simplesmente escrever algumas funções em vez de escrever uma classe?
Por exemplo, (estou aprendendo comPython interativo), um dos exercícios dados (que devo escrever usando uma classe) é:
Adicione umdistanceFromPoint
método que funciona de forma semelhante adistanceFromOrigin
exceto que é preciso umPoint
como parâmetro e calcula a distância entre esse ponto e o próprio.
Adicione um métodoreflect_x
paraPoint
que retorna um novoPoint
, um que é o reflexo do ponto sobre o eixo x. Por exemplo,Point(3, 5).reflect_x()
é(3, -5)
.
Eles escreveram o código usando classes como esta:
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))
Por que devo usar a classe quando posso escrevê-las da seguinte maneira:
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)