我试图摆脱我的全局变量,但我不是成功的.
在这种情况下,我让用户在运行程序时分配坐标.从这些坐标开始,我们开始驾驶一艘船(在矩阵内),这意味着我控制运动的功能需要从输入功能访问这些坐标.移动功能还需要为坐标分配新值.
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类中创建对变量进行操作的方法(这是一种更加面向对象的方式,并且更好地封装了状态)