python - 我可以让字典作为具有默认返回值的属性吗?

标签 python dictionary

我不确定这是否可行,但我想要的是让字典充当属性,在调用时返回默认值。基本上是这样的:

class galaxy(object):
    def __init__(self):
        self.mass = {'total':10,
                     'gas':2,
                     'stellar':8}

> gal = galaxy()

## call the dict like an attribute
> gal.mass
10

## but also have access to the dict
> gal.mass['total']
10
> gal.mass['gas']
2

如果这可以做到,最有效的方法是什么?

最佳答案

我认为,对于最终用户来说最不令人惊讶的结果是提供带有可选参数的访问方法,如下所示:

class galaxy(object):
    def __init__(self):
        self._mass = {'total':10,
                      'gas':2,
                      'stellar':8}
    def get_mass(self, body='total'):
        return self._mass[body]

gal = galaxy()
print gal.get_mass()
print gal.get_mass('gas')

或者,也许:

class galaxy(object):
    def __init__(self):
        self._mass = {'gas':2,
                      'stellar':8}
    def get_mass(self, body=None):
        if body is None:
            return sum(self._mass.values())
        return self._mass[body]

关于python - 我可以让字典作为具有默认返回值的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275223/

相关文章:

python - lightgbm.sklearn.LGBMRegressor 无法拟合简单直线

swift - 在各种条件下在字典中搜索 Swift

python - 如何使用字典映射替换字符串中的单词

c# - 参数字典包含不可为 null 类型 'id' 的参数 'System.Int32' 的 null 条目

python - 如何使用 Selenium 单击 javascript 按钮

python - 有没有办法使用 python 创建用户列表来将新用户添加到简单的游戏中?

python Django Celery 项目结构

python - Python While 循环中的动态变量

python - 从没有值(value)的字典中保存一个键

javascript - 我正在尝试读取 plist 版本中的 .strings 文件。我有 <key> 和 <string>。我不知道如何在我的 javascript 代码中读取这些输入。