python - 如何在另一个模块中获取给定类的所有实例
问题描述
所以我不确定这个问题是否在其他地方得到了回答,但我找不到任何与这种情况特别相关的可行解决方案,因为它们要么是如何访问同一个文件中的实例(工作正常),要么是使用 reload() (这不起作用)。
我有两个 python 文件,module1.py 和 module2.py。在 module1.py 中有一个类,其中包含我需要从 module2 访问的一堆实例。我在实例化时将每个实例附加到一个列表(作为类变量),但是在导入 module1 时,实例尚未实例化,因此该列表为空。这意味着我可以在 module1 中访问此实例列表,但在 module2 中它是空的。
模块1.py
class Class1:
instances = [ ]
def __init__(self):
self.instances.append(self)
a = Class1()
b = Class1()
c = Class1()
模块2.py
import module1
def foo():
print(len(module1.Class1.instances))
#prints zero, list should not be empty
那么如何从模块2访问在模块1中创建的这些实例呢?
解决方案
你应该做的是调用你正在导入的类,所以要么使用 [* (Import all)][1] 导入,要么像这样导入特定类:
from module1 import *
def foo():
return Class1.instances
c = foo()[0]
print(type(c)) # Is of type Module1.Class1
在模块 1 中:
class Class1:
instances = []
def __init__(self):
self.instances.append(self)
a = Class1()
b = Class1()
现在实例有 2 个元素,您可以在 module2 中访问它们
推荐阅读
- javascript - ReactJs 在按钮单击时增加 translateX()
- python - Python:为每个元素及其子元素创建一个子列表
- apache-kafka - 是否可以在仅使用 kafka-client 的 Spring Boot 中运行 kafka,例如没有 spring-kafka?
- android - Android 11 (API 30) 如何从我的应用程序启动默认计算器?
- c - 指向 int == 指向 char 的指针(有点)?
- c# - ASP.NET MVC 无法访问 appsettings.JSON
- javascript - 循环加载图像,一张一张,只有在上一张已经完全加载之后
- javascript - Slickslider 无限:如果只有一张幻灯片,则真正打破
- python - 如何在meshio中将颜色数组添加到网格?
- html - 如何让视频加载到 Github Pages html 上?