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

如何跟踪类实例?

锺离飞尘
2023-03-14
问题内容

在程序快要结束时,我希望将类的所有实例中的特定变量加载到字典中。

例如:

class Foo():
    __init__(self):
    x = {}

foo1 = Foo()
foo2 = Foo()
foo...etc.

假设实例数量会有所不同,我希望将Foo()的每个实例的x dict加载到新的dict中。我该怎么办?

我在SO中看到的示例假定一个已经具有实例列表。


问题答案:

跟踪实例的一种方法是使用类变量:

class A(object):
    instances = []

    def __init__(self, foo):
        self.foo = foo
        A.instances.append(self)

在程序结束时,您可以像下面这样创建字典:

foo_vars = {id(instance): instance.foo for instance in A.instances}

只有一个列表:

>>> a = A(1)
>>> b = A(2)
>>> A.instances
[<__main__.A object at 0x1004d44d0>, <__main__.A object at 0x1004d4510>]
>>> id(A.instances)
4299683456
>>> id(a.instances)
4299683456    
>>> id(b.instances)
4299683456


 类似资料:
  • (我想一个选择是重新修改我们的Feign接口,使其具有@feignclient,并重新修改所有自定义拦截器、编码器等的应用方式,但最终这可能是一项很大的工作,风险也很大。) 我是否需要做一个特殊的请求拦截器来手动地注入这些(例如,从一个自动连线的跟踪器)?有没有一种干净的方法(或现有的类)来做到这一点?

  • 我使用Spring Cloud Sleuth Zipkin来了解服务的时间和行为。 我发现的唯一缺点是:当每个微服务都有几个实例时,我没有找到一种方法来确定Zipkin信息所指的是哪个实例,因为Zipkin信息通过其服务名称(对所有人来说都是相同的)来识别它们。 有没有办法配置Sleuth在Zipkin中添加服务实例dinstination?

  • 我做了很多年的Java开发人员,主要是使用spring开发MVC Web应用程序。我正在学习Kotlin和Android作为一个自我开发项目,并且大部分都很喜欢它。我通常只是把事情弄清楚,但我认为我在这里遗漏了一些重要的东西(因为我喜欢编写易于维护且不容易出现异常的代码)。我理解与Java的互操作性,我只是对我的Kotlin代码是如何编译的感到困惑,并且对Java方法调用抛出异常没有任何警告。 下

  • 跟踪行为控制着 Entity Framework Core 是否会在其变更跟踪器里维持实体实例的信息。如果实体是被跟踪的,任何检测到的该实体的变更都将在 SaveChanges() 时持久化到数据库中。Entity Framework Core 还会对已跟踪的、之前已加载到 DbContext 实例中的查询和实体进行相互的导航属性装配。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。

  • 问题内容: 程序中没有单个方法“知道”它在堆栈中的位置。它所知道的只是它自己的小工作,它完成了并返回了。因此,当引发异常并打印堆栈跟踪时,它是从哪里来的? 在JVM中监视程序状态的每个应用程序旁边隐式地运行着一个单独的线程吗?还是JVM本身保存此信息,并且在抛出异常时以某种方式从异常中提取数据? 如果是上述两种情况之一,是否可以使用某些调用来检索堆栈跟踪(从监视器线程或JVM) 而不会 引发异常?

  • 问题内容: 嘿,我感动了一下代码,@Sam_M给了我。 我试图基本上跟踪多个手指在移动时的位置。就像手指1在这里,手指2在这里。因此,截至目前,它将打印视图上当前的手指/触摸数和位置,但不会分别跟踪两个手指。Ive环顾了stackoverflow上仅有的其他3个问题。但是没有人给我一个很好的结果,我可以迅速实现。 } 问题答案: 每个手指的触摸对象在屏幕上时,具有相同的内存地址将保持不变。您可以通