良好实践默认值

2024-09-28 20:18:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个运输品牌,每一个我想指定所有可用的 模型以及默认模型。你知道吗

所以我首先这样定义元组:

SUZUKI = ('model_1', 'model_2', 'model_3')
FERRARI = ('model_1', 'model_2')
# etc

我想为每个品牌指定一个默认型号。问题是这么多品牌, 为它们中的每一个定义一个默认变量将是乏味的:

SUZUKI_DEFAULT = 'model_1'
FERRARI_DEFAULT = 'model_2'
# etc

等等。因此,我想知道什么是一个好的,不太寒酸的解决办法来解决这个问题。 为每个品牌创建一个类可能是浪费资源,因为我不需要更多 附加参数或函数。你知道吗

我想过这样做,把默认值放在元组的末尾, 然后指定默认值的位置:

DEFAULT_POSITION = -1
SUZUKI = ('model_1', 'model_2', 'model_3', 'model_1')
FERRARI = ('model_1', 'model_2', 'default_model')
PORSCH = ('model_1', 'model_2', None)
# etc

然后我会做一个核对声明,比如:

if arg not in SUZUKI:
    arg = SUZUKI[DEFAULT_POSITION]

我的问题是,这是一个坏的做法,有没有其他解决办法,如果不是更好?你知道吗


Tags: 模型defaultmodel定义argetcposition元组
2条回答

你可以上一节课:

class Brand(object):
    def __init__(*models, default=None):
        self.models = *models
        self.default = default
        assert default is None or default in models

然后使用它:

SUZUKI = Brand('model_1', 'model_2', 'model_3', default='model_1')
FERRARI = Brand('model_1', 'model_2', default='model_2')
PORSCH = Brand('model_1', 'model_2', default=None)

为什么不用字典呢,在我看来是比较好的方法。代码本身将变得更容易理解。你知道吗

brands = {'Suzuki':['model_1', 'model_2'], 'Ferrari':['model_1', 'model_2']}

然后正常地打电话给他们:

brands['Suzuki']

输出:

['model_1', 'model_2']

相关问题 更多 >