def __init__(self, *args, **kwargs): self._name = None if 'quality' in kwargs.keys(): self._quality = kwargs['quality'] else: self._quality = 1 self.equiped = False self.features = [] self.modifiers = ModifiersStorage() self.features_data_dict = 'item_features'
class Item(object): type_ = 'item' def __init__(self, *args, **kwargs): self._name = None if 'quality' in kwargs.keys(): self._quality = kwargs['quality'] else: self._quality = 1 self.equiped = False self.features = [] self.modifiers = ModifiersStorage() self.features_data_dict = 'item_features' def add_feature(self, id_): Feature(self, id_, self.features_data_dict) def remove_feature(self, feature): if isinstance(feature, str): for feature in self.features: if feature.id == feature: feature.remove() else: try: i = self.features.index(feature) self.features[i].remove() except ValueError: return def feature_by_slot(self, slot): for feature in self.features: if feature.slot == slot: return feature def count_modifiers(self, attribute): return self.modifiers.count_modifiers(attribute) def set_name(self, name): self._name = name def set_quality(self, quality): self._quality = quality def make(self): try: self._init_features() except AttributeError: pass def make_from_dict(self, properties_dict): for key, value in properties_dict.items(): setter = 'set_' + key try: getattr(self, setter)(value) except AttributeError: pass @property def quality(self): return min(5, self._quality + self.count_modifiers('quality')) @property def name(self): return self._name @property def type(self): return self.type_ def equip(self): self.equiped = True def unequip(self): self.equiped = False