我是一个非常业余的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)