Могу ли я использовать предопределенные переменные, объединяя имя переменной? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть такие переменные пары

KEY_PasswordExpiryFeature = "PasswordExpiryFeature"
KEY_PasswordExpiryFeature_DEFAULT = "FALSE"

У меня есть методы, которые я вызываю, где я должен указать обе эти переменные. Однако, чтобы избавить меня от некоторой бездумной печати, я хочу указать только первую переменную

KEY_PasswordExpiryFeature = "PasswordExpiryFeature"

и в способе получения сделайте это

def evaluate(et, key):
    print("Evaluating key: %s -> Passed: %s" % (getKeyAttribute(et, key), getValueAttribute(et, key).lower() != VALUEOFVARIABLE("KEY_" + key + "_DEFAULT")))

вместо этого

def evaluate(et, key, default_value):
    print("Evaluating key: %s -> Passed: %s" % (getKeyAttribute(et, key), getValueAttribute(et, key).lower() != default_value))

1 Ответ

1 голос
/ 24 июня 2019

Вместо передачи необработанных переменных.Возможно, вы хотите инкапсулировать ваши пары переменных в какой-то другой объект.Два распространенных варианта - это словари или именованные кортежи.Например:

KEY_PasswordExpiry = {
    "feature": "PasswordExpiryFeature",
    "default": False
}

или

from collections import namedtuple

Key = namedtuple("Key", ["feature", "default"])

PasswordExpiry = Key(feature="PasswordExpiryFeature", default=False)

В случае namedtuple вы можете получить доступ к значениям feature и default клавиши PasswordExpiry с точкойзапись.

>>> PasswordExpiry.feature
'PasswordExpiryFeature'
>>> PasswordExpiry.default
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...