gpt4 book ai didi

python - 在类变量上调用类内的 type(dict) 函数 (Python 3.4)

转载 作者:行者123 更新时间:2023-12-01 04:53:27 25 4
gpt4 key购买 nike

我正在创建一个类,并尝试定义与在另一个类变量上调用的 .keys() 或 .values() 等函数相对应的类变量。例如:

class DATA(object):
def __init__(self, id, database = {}):
self.id = id
self.database = database
self.addresses = database.keys()
self.data = database.values()

这似乎不起作用,因为当我创建该类的实例时

foo = DATA(0,{"a":1,"b":2})

然后询问:

print(foo.addresses)
>>> []

它返回一个空列表。

注意:

在我的实际程序中,我从任何类实例的空字典开始,然后使用一个函数添加到字典中。在这种情况下,调用“.database”仍然有效,但“.addresses”则无效。

谁能帮我解决这个问题吗?

最佳答案

我不确定这就是问题所在,但使用诸如 {} 之类的可变参数作为默认参数通常会导致错误。请参阅:"Least Astonishment" and the Mutable Default Argument

这更安全:

def __init__(self, id, database=None):
if database is None:
self.database = {}
else:
self.database = database

我不明白 DATA.addresses 和 DATA.data 的用途。您可以使用带有属性装饰器的函数来避免冗余吗?

@property:
def addresses(self):
return self.database.keys()

@property:
def data(self):
return self.database.values()

关于python - 在类变量上调用类内的 type(dict) 函数 (Python 3.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27976004/

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