Я работаю над скриптом и могу использовать некоторые рекомендации. Цель сценария - позволить игрокам получать магические предметы и хранить их в определенном слоте. У меня возникла проблема с попыткой создания элемента на основе того, какой слот предоставляется.Передача элементов класса в качестве аргументов
Я создаю дочерний класс типа dict. Здесь я буду хранить элементы пользователей.
class PlayerData(dict):
def __init__(self):
self.weapon = 0
self.head = 0
self.back = 0
self.chest = 0
self.hands = 0
self.feet = 0
def __getattr__(self, attr):
return self.__getitem__(attr)
def __setattr__(self, attr, value):
self.__setitem__(attr, value)
Я сохраняю эти значения в словаре. У меня есть класс, который изменяет эти записи. Один из методов выполняет итерации над элементами в PlayerData, и если все элементы пусты, захватывает случайный и пытается добавить к нему объект (типа MagicItem). «self.steamid» - это ссылка на игрока.
def addItem(self):
chance = 75
slot = 0
count = 0
for k,v in PlayerDataDictionary[self.steamid].iteritems():
if not v:
count += 1
if count = 6:
chance = 100
if random.randint(1,100) <= chance:
slot = random.choice(PlayerDataDictionary[self.steamid])
if slot:
chooseReplace(self, slot)
else:
PlayerDataDictionary[self.steamid][slot] = MagicItem(slot)
else:
es.tell(userid, '#green', 'You destroyed your item during creation!')
# This is a custom module for a game, this function works as intended
Однако, тот элемент, который создается, зависит от слота. Как определить, какой слот из PlayerData был передан классу MagicItem?
'if count = 6:' ... Скомпилирует ли это? – Hyperboreus
Какое преимущество вы получаете, используя класс 'PlayerData', используя простой словарь или простой класс с его атрибутами? – Hyperboreus
Я еще не скомпилировал, все еще работаю над тем, как я хочу, чтобы он работал. Я использую его как класс в случае, если мне нужно добавить некоторые методы, и на данный момент он не использует атрибуты словаря? – user1023102