第一类到第二类的局部变量

时间:2013-04-13 21:57:57

标签: python class variables local

有没有办法让局部变量从头等到第二类?

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.

有什么方法可以做到这一点吗?谢谢你的建议。

3 个答案:

答案 0 :(得分:1)

您的代码中显示行

的原因
print posInst.positionX

print 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)。

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

答案 1 :(得分: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()

答案 2 :(得分: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

我在另一个类中尝试这个,但它只是在循环中工作。但它的工作。谢谢大家的建议:)