python中的全局方法或函数

时间:2014-05-23 17:22:55

标签: python

我正在使用ipad上的pythonista在Python中制作一个小游戏。 我创建了一个矢量类,其中包含要添加的坐标和几个函数,获取长度,设置长度。我有另一个名为Game的类,我有我的游戏变量和函数。我可以定义一个矢量让我们说

self.pos=vector(200,200)

但是,如果我想计算出长度,我就无法调用getlength函数,因为我不在合适的班级。

示例(我已经取出了大部分代码):

class vector(objet):
    def __init(self,x,y):
        self.x=x
        self.y=y

   def getlength(self):
       return sqrt(self.x**2+self.y**2)

  def addvec(self,a,b):
   return vector(a.x+b.x,a.y,b.y)


class Game(object):
    def __init__(self):
        self.pos=vector(200,200)
        self.pos=vector(200,200)

    def loop(self):
        ## here i want something like d= length of self.pos !!

class MyScene(Scene):
    def setup(self):
        self.game=Game()

    def draw(self):
        self.game.loop()  

run(MyScene())

谢谢, 尼古拉斯

编辑:电话

sum=addvec(self.pos,self.pos2)

显然不起作用,因为自我是一个游戏类。我该怎么办?

1 个答案:

答案 0 :(得分:4)

为什么要为getLength函数使用两个参数?第二个是矢量(我假设)所以最好使用:

def getLength(self):
    return sqrt(self.x**2+self.y**2)

然后只需致电:

d = self.pos.getLength()

如果你想要将两个向量一起添加,你可以这样做:

def add(self,other_vector):
    return vector(self.x+other_vector.x,self.y+other_vector.y)

所以你打电话:

sum = self.pos.add(some_other_vector)

BTW:类应始终用CamelCase编写。也许您应该在python中阅读有关面向对象编程的内容:http://code.tutsplus.com/articles/python-from-scratch-object-oriented-programming--net-21476