2012-11-30 41 views
2

我正在写一些Python代码的访问,并有一个类如下Python中,我的对象声称没有一种方法

class GO: 

    ##irrelevant code 
    def getCenter(self): 
     xList = [] 
     yList = [] 

     # Put all the x and y coordinates from every GE 
     # into separate lists 
     for ge in self.GEList: 
      for point in ge.pointList: 
       xList.append(point[0]) 
       yList.append(point[1]) 

     # Return the point whose x and y values are halfway between 
     # the left- and right-most points, and the top- and 
     # bottom-most points. 
     centerX = min(xList) + (max(xList) - min(xList))/2 
     centerY = min(yList) + (max(yList) - min(yList))/2 
     return (centerX, centerY) 



    ###more irrelevant code 
    def scale(self, factor): 

     matrix = [[factor,0,0],[0,factor,0],[0,0,1]] 
     for ge in self.GEList: 
      fpt = [] 
      (Cx, Cy) = ge.getCenter() 
      for pt in ge.pointList: 
       newpt = [pt[0]-C[0],pt[1]-C[0],1]###OR USE TRANSLATE 
       spt = matrixPointMultiply(matrix, newpt) 
       finalpt = [spt[0]+C[0],spt[1]+C[0],1] 
      fpt.append(finalpt) 
     ge.pointList=fpt 
     return 

每当我运行它,它说:AttributeError: circle instance has no attribute 'getCenter'。 如何让对象正确调用函数本身? 这是一个不好的问题,我正在学习,所以详细的建议会有帮助。

+1

您可以省略'self.GEList',但它似乎很重要。 (在任何情况下,根据错误消息,所讨论的对象不是'GO'实例。) – delnan

+0

你是怎么调用这个代码的? –

+0

在另一个问题上,将GE分成x,y列表的更简单方法是使用zip。例如,如果'GE = [(2,3),(4,5),(6,7)]',那么在'[x,y] = zip(* GE)'后,我们有'x =(2 ,4,6)'和'y =(3,5,7)' –

回答

0

你检查了你的缩进以确保它是一致的吗?这是一个经典的Python初学者问题。您需要使用一致的空格(无论是制表符还是空格,大多数人更喜欢空格)以及适量的空格。

例如,这可能看起来不错,但它不会做你所期望的:

class Dummy(object): 

    def foo(self): 
    print "foo!" 

    def bar(self): 
     print "bar!" 

d = Dummy() 
d.bar() 

这将返回:

AttributeError: 'Dummy' object has no attribute 'bar' 

如果这不是它,尝试削减你的代码降到最低限度,并发布,以及你如何调用它。就目前来看,除非我错过了一些东西,否则一般形式对我来说看起来还不错。

相关问题