У меня есть следующий код:
class Player:
def __init__(self, username, trip, model):
self.username = username
self.trip = trip
self.hp = 100
#### For player moving location/room ####
def Move(self, dest):
if dest == self.loc:
return True
# Check destination room is accessible from current room
for room in aGame['rooms']:
if room['ref'] == self.loc:
for acsroom in room['acs']:
if acsroom == dest:
self.loc = dest
return True
return False
aGame - это массив, который определен вне этого класса, поэтому этот код не работает.Поскольку в этом классе, вероятно, будет много других функций, которые, возможно, будут использовать массив aGame, я должен сделать следующее:
class Player:
def __init__(self, username, trip, model, aGame):
self.username = username
self.trip = trip
self.hp = 100
self.aGame = aGame
#### For player moving location/room ####
def Move(self, dest):
if dest == self.loc:
return True
# Check destination room is accessible from current room
for room in self.aGame['rooms']:
if room['ref'] == self.loc:
for acsroom in room['acs']:
if acsroom == dest:
self.loc = dest
return True
return False
Или лучше сделать это:
class Player:
def __init__(self, username, trip, model):
self.username = username
self.trip = trip
self.hp = 100
#### For player moving location/room ####
def Move(self, dest, aGame):
if dest == self.loc:
return True
# Check destination room is accessible from current room
for room in aGame['rooms']:
if room['ref'] == self.loc:
for acsroom in room['acs']:
if acsroom == dest:
self.loc = dest
return True
return False
Или я должен сделать aGame глобальной переменной (если да, то как, обратите внимание, что этот класс находится в другом файле)?
Поскольку aGame - это массив, который используется повсеместно, он некажется правильным делать копии этого внутри каждого класса.Я могу ошибаться, я медленно изучаю ООП, так что спасибо за любую помощь.