我试图摆脱我的全局变量,但我不是成功的.
在这种情况下,我让用户在运行程序时分配坐标.从这些坐标开始,我们开始驾驶一艘船(在矩阵内),这意味着我控制运动的功能需要从输入功能访问这些坐标.移动功能还需要为坐标分配新值.
koordx = 0 koordy = 0 distancetraveled = 0 def input (): global koordx global koordy koordx = int(input ("Assign Y coordinate)")) koordy = int(input("Assign Y coordinate")) ..... etc
这是移动的例子,改变了坐标.
def north (): global distancetraveled distancetraveled += 2 global koordy koordy -= 1 def northeast(): global distancetraveled distancetraveled += 2 global koordx koordx += 1 global koordy koordy -= 1 def movement(): if... . .. : northeast() etc... #moves northeast input() movement()
这只是一个例子,我还有一些需要访问这些坐标及其值的函数.我怎样才能顺利摆脱全局变量?
这只是我的代码的一部分,我修改后使其更容易理解我需要帮助的内容.
任何提示将不胜感激.
您可以创建一个Boat类,并封装Boat实例中的坐标和距离:
class Boat: def __init__(self, x, y, dist=0): self.x = x self.y = y self.dist=dist
然后你可以创建在Boats上运行的函数,并修改这些变量,或者你可以在Boat类中创建对变量进行操作的方法(这是一种更加面向对象的方式,并且更好地封装了状态)