有没有办法让局部变量从头等到第二类?
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.
有什么方法可以做到这一点吗?谢谢你的建议。
答案 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
我在另一个类中尝试这个,但它只是在循环中工作。但它的工作。谢谢大家的建议:)