类的Defaultdict-获取类中当前被调用实例的索引/键
是的 我知道您看不懂标题。
以下面的代码为例。
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
(任何可调用的)默认工厂不接受参数。如果
default_factory
不为 None ,则在不带参数的情况下调用该函数以提供给定键的默认值,此值将插入键的字典中并返回。换句话说,
defaultdict
不会将任何信息传递给default_factory
。子类
defaultdict
可自定义默认__missing__
钩子,以使用缺少键作为参数来调用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
在此过程中,建议您重新考虑存储/访问数据的方式。