gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:15:50 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com