是否可以通过串联变量名称来使用预定义变量?

时间:2019-06-24 14:05:23

标签: python variables

我有这样的变量对

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 个答案:

答案 0 :(得分:1)

而不是传递原始变量。您可能希望将变量对封装到其他对象中。两种常见的选择是字典或命名元组。例如:

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

from collections import namedtuple

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

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

namedtuple情况下,您可以使用点符号访问feature键的defaultPasswordExpiry值。

>>> PasswordExpiry.feature
'PasswordExpiryFeature'
>>> PasswordExpiry.default
False