gpt4 book ai didi

Python - 在类函数中更新类自字典

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:39 24 4
gpt4 key购买 nike

我在类 (self.d1) 中声明了一个字典。调用 f1 函数后,self.d1 需要更新为 f1 内部声明的本地字典

import copy

class num:
def __init__(self):
self.d1 = {'a':1, 'b':2, 'c':3}
self.f1(self.d1)

print self.d1

def f1(self,d):
d2 = {'d':4, 'e':5, 'f':6}
d = copy.deepcopy(d2)

test = num()

我希望输出是:

{'d':4, 'e':5, 'f':6}

但是输出是

{'a':1, 'b':2, 'c':3}

我想了解问题是什么,而不仅仅是解决方案

最佳答案

您不想在 f1() 中分配给 d,因为它失去了它必须到 self.d1 的旧绑定(bind).所以赋值后d只是f1()的局部变量。

但是你可以用这个实现你想要的:

class num:
def __init__(self):
self.d1 = {'a':1, 'b':2, 'c':3}
self.f1(self.d1)

print self.d1

def f1(self,d):
d2 = {'d':4, 'e':5, 'f':6}
d.clear()
d.update(d2)

test = num()

输出

{'e': 5, 'd': 4, 'f': 6}

请注意,我的代码没有对 f1() 中的 d 进行赋值,它只调用改变现有对象。 p>

有关此主题和相关主题的更多引用,请参阅 SO stalwart Ned Batchelder 撰写的这篇优秀文章:Facts and myths about Python names and values

关于Python - 在类函数中更新类自字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28454505/

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