当前位置: 首页 > 面试题库 >

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

曹钊
2023-03-14
问题内容

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

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_factoryRoom类构造函数):

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

在此过程中,建议您重新考虑存储/访问数据的方式。



 类似资料:
  • 问题内容: 我有一个扩展的打字稿类: 然后是一个地方,我必须手动创建一个实例并将其附加到DOM: 由于系统的体系结构限制,我需要为该组件存储对我的类实例的引用以供以后使用,问题是我在创建的元素中找不到对我的类实例的任何引用,它只有一个引用通过财产上课。 只允许我提供类,而不喜欢手动实例化的对象。 为了实例化自定义组件,将其附加到DOM并获取对组件类实例的引用,我应该怎么做? 问题答案: 您有几种选

  • 问题内容: 我要做的就是获取当前的类名,并且java在类名的末尾附加了一个无用的废话 $ 1 。如何摆脱它,只返回实际的类名? 问题答案: “ $ 1”不是“无用的废话”。如果您的班级是匿名的,则会附加一个数字。 如果您不想要类本身,而是想要其声明类,则可以使用。例如: 您可以使用一些静态实用程序方法来移动它。 但是请注意,这不是当前的类名。匿名类与其封闭类是不同的类。内部类的情况与此类似。

  • 因此,我初始化了一个名为P1的对象,名称为“zach”,hp为100,损坏为20,我无法在其他地方访问这3个变量。这些不是玩家类中的私有变量,我说的是类中通过执行以下操作初始化的那些变量: 我想我可以在任何地方调用P1.health,如果它是公共的?感谢任何帮助,这是我的第一个基于文本的游戏机游戏,所以其他输入也很感谢。

  • 知道给定的JVM实例当前加载了哪些类会很方便。 例如,有没有办法通过JVisualVM获取它们? 编辑:我知道@Java给出的解决方案-获取JVM中加载的所有类的列表,但我想知道是否有办法通过JVisualVM或其他工具实现这一点。目前,我正在处理一个RCP应用程序,我宁愿不必通过java工具运行应用程序(是的,我很懒)。

  • 本文向大家介绍Python 获取numpy.array索引值的实例,包括了Python 获取numpy.array索引值的实例的使用技巧和注意事项,需要的朋友参考一下 举个例子: 我想获取其中值等于7的那个值的下标,以便于用于其他计算。 如果使用np.where,如: 运行结果是: 显然(array([7]),)中的数字7我是没法提取出来做运算的,这是一个tuple。 处理方法是: 运行结果为:

  • 问题内容: 如果我从中创建函数的基类是派生该实例的类的基类,那么如何查找在Python中创建对象实例的类的名称? 我想也许检查模块可能在这里帮助了我,但似乎没有给我我想要的东西。除了解析__class__成员之外,我不确定如何获取此信息。 问题答案: 你是否尝试过该类的属性?即会给你班级的名字,我想这就是你想要的。 此方法仅适用于新式类。你的代码可能使用一些旧式类。这两种方法均适用: