0

有什么办法可以让局部变量从一等到二等?

class Position:
    positionX = 0.0   #starting value of positionX, but I need to change this in counting method when I push arrow key

    def counting(self, posX):
        self.positionX = posX   #posX is for example position X of my cursor which I move with arrows so value is changing when I push to arrow key.

class Draw:
    posInst = Position()
    print posInst.positionX   #here I need to get positionX variable from Position class. But its show me just 0.0. I need to get exact value which is change when I push arrow key and its change in counting method. If I push arrow key and value in counting method will be 20 I need this number in Draw class. But everytime is there 0.0.

有什么办法可以做到这一点?感谢您的建议。

4

3 回答 3

1

在您的代码中显示该行的原因

print posInst.positionX

prints 0.0 是因为 Draw 创建了它自己的 Position 实例,您没有调用它的计数方法来更改它。

class Position:
    positionX = 0.0

    def counting(self, posX):
        self.positionX = posX


class Draw:
    posInst = Position()
    posInst.counting(20)
    print posInst.positionX

draw = Draw()

在您的实际代码中,Draw 类实际上是在创建自己的 Position 类实例。

如果是,那么当您想调用计数时,您可以执行 draw_instance.posInst.counting(value)。

如果您要创建一个单独的位置实例,您想直接调用其计数方法,那么您最好传入以绘制位置实例。

于 2013-04-13T23:18:33.603 回答
0

所以它以这种方式工作。

class Position:
    def __init__(self):
        self.positionX = 0.0

    def counting(self, posX):
        self.positionX = posX

def mainLoop:
    position = Position()

    while running:
        position.positionX

我在另一堂课上尝试过,但它只是循环工作。但它的工作。谢谢大家的建议:)

于 2013-04-14T10:21:59.283 回答
0

执行此操作的“正确”方法是get在您的Position类中包含一个方法,该方法返回positionX. 直接访问其他类的内部变量被认为是不好的做法。

class Position:
    positionX = 0.0

    def counting(self, posX):
        self.positionX = posX

    def getPosition(self):
        return self.positionX

class Draw:
    posInst = Position()
    print posInst.getPosition()
于 2013-04-14T06:13:21.223 回答