我正试图摆脱我的全局变量,但我并没有成功。
在这种情况下,我让用户在运行程序时指定坐标。从这些坐标开始,我们开始驾驶一艘船(在矩阵内),这意味着我控制运动的功能需要从输入功能访问这些坐标。移动功能还需要为坐标分配新值。
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()
这只是一个例子,我还有一些需要访问这些坐标及其值的函数。我怎样才能顺利摆脱全局变量?
这只是我修改的代码的一部分,以便让我更需要帮助。
任何提示都将不胜感激。
答案 0 :(得分:7)
您可以创建一个Boat类,并封装Boat实例中的坐标和距离:
class Boat:
def __init__(self, x, y, dist=0):
self.x = x
self.y = y
self.dist=dist
然后你可以创建在Boats上运行的函数,并修改这些变量,或者你可以在Boat类中创建对变量进行操作的方法(这是一种更加面向对象的方式,并封装了状态更好)