gpt4 book ai didi

python - 类的 Defaultdict - 获取类中当前调用实例的索引/键

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:04 25 4
gpt4 key购买 nike

是的!我知道你看标题是看不懂的。
以下面的代码为例。

class Room(object):
def __init__(self):
self.numbers = []
self.identify = None #for now?
def getRoom(self):
#here I need to implement so that,
# self.identify is current indent this class is called!
return self.identify
room = defualtdict(Room)
print room['Train'].getRoom()
print room['Hospital'].getRoom()

异常输出。

#>>Train
#>>Hospital

defaultdict 是否支持任何此类功能,以便我可以这样做?一旦房间类“某物”被调用,在类中,我需要一个代码,这样 self.room 就是被调用的“某物”!

最佳答案

collections.defaultdict的默认工厂(任何可调用的)不接受参数。

If default_factory is not None, it is called without arguments to provide a default value for the given key, this value is inserted in the dictionary for the key, and returned.

换句话说,defaultdict 不会向default_factory 传递任何信息。

子类 defaultdict 自定义默认 __missing__ Hook 调用 default_factory(Room 类构造函数),缺少键作为参数:

from collections import defaultdict

class mydefaultdict(defaultdict):
def __missing__(self, key):
self[key] = new = self.default_factory(key)
return new

Room 的构造函数看起来像

class Room(object):
def __init__(self, identity):
self.numbers = []
self.identify = identity

从现在开始,您需要使用 mydefaultdict 而不是 defaultdict。示例:

room = mydefaultdict(Room)
print(room['Train'].getRoom()) # Train
print(room['Hospital'].getRoom()) # Hospital

虽然这可行,但我建议您重新考虑存储/访问数据的方式。

关于python - 类的 Defaultdict - 获取类中当前调用实例的索引/键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32932494/

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