Я использую python для создания создателя персонажей подземелий и драконов, и в настоящее время я программирую оружие. Я воссоздал какой-то код, который не работал в предыдущих подобных средах, и мне было интересно, как он работает, не требуя инструкции if для каждой отдельной переменной, так что может быть доступно редактирование дополнительных свойств и элементов.Создание переменной внутри цикла for
Целью является создание Оружия (Объекта), которое имеет только связанные с ним Свойства (переменные).
Текущий код:
class Weapon:
def __init__(self, finesse, light, thrown, two_handed, versatile):
property_list = [finesse, light, thrown, two_handed, versatile]
for prop in property_list:
if prop != 0:
self.prop = prop
dagger = Weapon('finesse', 'light', 'thrown', 0, 0)
В настоящее время переменная не будет создана для оружия; таким образом
dagger.finesse
Не существует. В идеале 'finesse'
будет храниться в переменной dagger.finesse
, тогда как переменная dagger.two_handed
не будет создана кодом.
Возможно, я пропустил что-то простое, и могут быть повторяющиеся вопросы, но я не могу найти аналогичный вопрос с ответом, который я ищу.
Спасибо всем, кто ответил
редактируют
Спасибо @WKPlus некоторой помощи форматирования; Я новичок в веб-сайте stackoverflow
Я понял благодаря @abarnert, что лучший способ сделать это состоит в том, чтобы иметь свойства, перечисленные в переменной, и проверить эту переменную позже в коде для свойства, например так
class Weapon:
def __init__(self, finesse, light, thrown, two_handed, versatile):
property_list = [finesse, light, thrown, two_handed, versatile]
self.properties = []
for prop in property_list:
if prop != 0:
self.properties.append(prop)
Однако я по-прежнему заинтересован в том, как может ответить мой первоначальный вопрос, так как он все еще может быть полезно запустить что-то вроде моего оригинала без заявления об исключении.
Почему вы хотите 'Weapon.finesse' быть строка '' finesse'' или несуществующая? Разве было бы лучше, если бы это было, скажем, bool, что верно для кинжалов и фальшивых для клубов? – abarnert
Подумайте, как вы собираетесь это использовать. Вы хотите попробовать: player.weapon.finesse, кроме AttributeError: 'весь код? – abarnert
В идеале было бы несколько подклассов «Оружие». – TigerhawkT3