假设我有以下类(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/