python - 在子类中扩展类属性的一种巧妙方法

标签 python

假设我有以下类(class)

class Parent(object):
    Options = {
        'option1': 'value1',
        'option2': 'value2'
    }

还有一个叫做 Child 的子类

class Child(Parent):
   Options = Parent.Options.copy()
   Options.update({
        'option2': 'value2',
        'option3': 'value3'
   })

我希望能够覆盖或添加子类中的选项。我正在使用的解决方案有效。但我确信有更好的方法。


编辑

我不想将选项添加为类属性,因为我还有其他不是选项的类属性,我更喜欢将所有选项保存在一个位置。这只是一个简单的例子,实际代码比这更复杂。

最佳答案

语义上等同于您的代码,但可以说更整洁:

class Child(Parent):
   Options = dict(Parent.Options,
      option2='value2',
      option3='value3')

请记住,“没有大括号的生活会更好”,并且通过显式调用 dict,您通常可以避免使用大括号(以及在键周围的额外引号,它们是类似标识符的常量字符串)。

http://docs.python.org/library/stdtypes.html#dict有关更多详细信息 - 键位是“如果在位置参数和关键字参数中都指定了键,则保留与关键字关联的值”,即关键字 args override key-value位置 arg 中的关联,就像 update 方法允许您覆盖它们一样)。

关于python - 在子类中扩展类属性的一种巧妙方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/907324/

相关文章:

python - Pygame.错误: file is not a WINDOWS BMP file (mac osx)

python - 如何在 beautifulsoup4 中根据图像内部的内容分离图像链接

python - 如何在左键单击时显示 QMenu

python - Django 和 Celery 中的异步逻辑

python - 使用 python 比较和操作字符串

python - 无法使用python scrapy框架在postgre中插入日期

python - 使用ffmpeg拼接图像形成视频文件时出错

python - 为什么 TensorFlow WHL 文件不包含所有必需的依赖项?

python - 同时使用两个注释表达式时出现错误结果

Python 在任何脚本之前运行