Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Alter超类';Python子类中的变量_Python_Python 2.7 - Fatal编程技术网

Alter超类';Python子类中的变量

Alter超类';Python子类中的变量,python,python-2.7,Python,Python 2.7,以此为例, class A(): dictionary={'item1':'value1','item2':'value2'} class B(A): 我希望能够将第三个项添加到已经存在的B类超类字典中。不要完全覆盖它,只需添加第三个值 如何做到这一点?您需要在B中创建可变字典的副本: class B(A): dictionary = A.dictionary.copy() dictionary['key'] = 'value' 您可以使用dict()callabl

以此为例,

class A():
    dictionary={'item1':'value1','item2':'value2'}

class B(A):
我希望能够将第三个项添加到已经存在的B类超类字典中。不要完全覆盖它,只需添加第三个值


如何做到这一点?

您需要在
B
中创建可变字典的副本:

class B(A):
    dictionary = A.dictionary.copy()
    dictionary['key'] = 'value'
您可以使用
dict()
callable一步完成此操作:

class B(A):
    dictionary = dict(A.dictionary, key='value')
无论哪种方式,
B.dictionary
现在有3个键值对,而
A
只有两个:

>>> class A():
...     dictionary={'item1':'value1','item2':'value2'}
... 
>>> class B(A):
...     dictionary = dict(A.dictionary, key='value')
... 
>>> A.dictionary
{'item2': 'value2', 'item1': 'value1'}
>>> B.dictionary
{'item2': 'value2', 'item1': 'value1', 'key': 'value'}

A.dictionary[“foo”]=“bar”
?您可能希望
B
拥有自己的词典副本,因此与
A
相同的词典,但添加了一些内容
A
本身不应该有额外的键,对吗?@PadraicCunningham将为
A
添加它,too@jonrsharpe,是的,但我不知道覆盖是什么意思