创建一个可选择的Python类

时间:2017-02-27 13:15:07

标签: python python-2.7 python-3.x class debugging

我正在尝试为我的应用程序创建一些自定义Python类。当我尝试调试我的代码时,我无法选择自定义类的实例,我收到错误"对象XXX不可选择"。 我找到了这个页面https://docs.python.org/3/library/pickle.html#what-can-be-pickled-and-unpickled但我不明白我应该如何实现使我的类可选的方法。 例如,您将如何修改以下类,以便我可以选择它们的实例?

class Point3D:
  def __init__ (self, x, y, z):
    self.x = x
    self.y = y
    self.z = z

  def move(self, vector):
    self.x += vector.x
    self.y += vector.y
    self.z += vector.z
    return

  def isValidPoint(self):
    isNotValid = False
    isNotValid = math.isnan(self.x) or math.isnan(self.y) or math.isnan(self.z)
    return not isNotValid

并且

class PointCloud3D:
  def __init__ (self):
    self.points = []    

  def getNumberOfPoints(self):
    return len(self.points)

  def addPoint(self, point):
    self.points.append(point)
    return

  def addPointCloud3D(self, additionalPointCloud3D):
    for self.point in additionalPointCloud3D:
        self.addPoint(point)

  def getCloudCenter(self):
    numberOfPoints = self.getNumberOfPoints()
    centersSumX = 0
    centersSumY = 0
    centersSumZ = 0
    for point in self.points:
        centersSumX = centersSumX + point.x
        centersSumY = centersSumY + point.y
        centersSumZ = centersSumZ + point.z
    centerX = centersSumX/numberOfPoints
    centerY = centersSumY/numberOfPoints
    centerZ = centersSumZ/numberOfPoints

    center = Point3D(float(centerX), float(centerY) , float(centerZ))

    return center

在这里,您可以找到我尝试调试的代码:

from classDatabase import Point3D, PointCloud3D

testPoint1 = Point3D(1.5, 0.2, 2.3)
testPoint2 = Point3D(3.5, 1.2, 5.3)

testPointCloud3D = PointCloud3D()
testPointCloud3D.addPoint(testPoint1)
testPointCloud3D.addPoint(testPoint2)

最后是问题的截图: enter image description here

0 个答案:

没有答案