xro*_*r15 2 python methods class function point
我正在尝试在python中创建一个名为"Point"的类.我试图在坐标平面x和y上创建一个点并跟踪它们.以及找到点之间的距离.我必须使用函数和方法.我已经开始了,这是我的代码.我执行程序时,我只是不确定如何使用它.任何帮助将不胜感激.
编辑:更新的代码
import math
class Point(object):
'''Creates a point on a coordinate plane with values x and y.'''
COUNT = 0
def __init__(self, x, y):
'''Defines x and y variables'''
self.X = x
self.Y = y
def move(self, dx, dy):
'''Determines where x and y move'''
self.X = self.X + dx
self.Y = self.Y + dy
def __str__(self):
return "Point(%s,%s)"%(self.X, self.Y)
def getX(self):
return self.X
def getY(self):
return self.Y
def distance(self, other):
dx = self.X - other.X
dy = self.Y - other.Y
return math.sqrt(dx**2 + dy**2)
def testPoint(x=0,y=0):
'''Returns a point and distance'''
p1 = Point(3, 4)
print p1
p2 = Point(3,0)
print p2
return math.hypot(dx, dy)
print "distance = %s"%(testPoint())
Run Code Online (Sandbox Code Playgroud)
我仍然需要帮助了解如何实际使用代码.这就是我创建这个testPoint
功能的原因.当我真正去执行IDLE中的代码时,如何证明一切正常?谢谢一群人!!
我还需要在构造函数中添加代码,以便在COUNT
每次创建Point对象时增加1.我还需要添加适当的代码,以便可以使用比较运算符比较点,而"点"则根据它们与原点的距离进行比较.
别忘了 math.hypot
def distance(self, p):
dx = self.X - p.X
dy = self.Y - p.Y
return hypot(dx, dy)
Run Code Online (Sandbox Code Playgroud)
您声明distance
正在争论p
;在您将其称为 的方法内部other
。在声明中更改p
为以使它们匹配。other
sqrt()
不是内置的;您需要执行import math
并将其称为math.sqrt()
.
您没有对testPoint()
您声明的函数执行任何操作;您可以通过在末尾添加一行来调用它,例如:
print "distance = %s"%(testPoint())
此时,您的代码将开始工作并计算出点之间的距离为 4.0。
现在,一些风格问题:
在 Python 中,您通常不会私有化成员变量,也不会费心编写琐碎的 getter 和 setter,因此您可以删除getX()
和getY()
方法,而只需引用p.X
并p.Y
直接给出Point p
.
该math
模块有一个方便的斜边功能,因此distance()
您可以将返回线更改为return math.hypot(dx,dy)
。
默认情况下,用户定义的对象具有不吸引人的字符串表示形式:
<__main__.Point object at 0x1004e4550>
您应该在类中定义一个字符串转换方法,如下所示:
def __str__(self):
return "Point(%s,%s)"%(self.X,self.Y)
Run Code Online (Sandbox Code Playgroud)
这将在打印对象或需要转换为字符串时使用。
归档时间: |
|
查看次数: |
38164 次 |
最近记录: |