如何在Python中获取给定类的所有实例列表?

如何在Python中获取给定类的所有实例列表?

使用gc或weakref模块可以获取给定类的所有实例列表。首先,我们将使用pip安装gc模块 −

pip install gc

要使用gc模块,请使用import −

import gc

使用gc模块获取类的实例

在此示例中,我们创建了一个名为Demo的类,并有四个实例 −

ob1 = Demo()
ob2 = Demo()
ob3 = Demo()
ob4 = Demo()

我们遍历内存中的对象 −

for ob in gc.get_objects():

示例

使用isinstance()函数,检查每个对象是否是Demo类的实例。让我们看看完整的示例 −

import gc
# 创建一个类
class Demo:
   pass

# 四个对象
ob1 = Demo()
ob2 = Demo()
ob3 = Demo()
ob4 = Demo()

# 显示给定类的所有实例
for ob in gc.get_objects():
   if isinstance(ob, Demo):
      print(ob)

输出

<__main__.Demo object at 0x000001E0A407FC10>
<__main__.Demo object at 0x000001E0A407EBC0>
<__main__.Demo object at 0x000001E0A407EBF0>
<__main__.Demo object at 0x000001E0A407EC20>

使用gc模块显示类的实例计数

示例

在此示例中,我们将计算并显示实例的计数 −

import gc

# 创建一个类
class Demo(object):
   pass

# 创建4个对象
ob1 = Demo()
ob2 = Demo()
ob3 = Demo()
ob4 = Demo()

# 计算并显示实例的计数
res = sum(1 for k in gc.get_referrers(Demo) if k.__class__ is Demo)
print("实例计数 = ",res)

输出

实例计数 = 4

使用weakref模块显示类的实例

也可以使用weakref模块获取类的实例。首先,我们将使用pip安装weakref模块 −

pip install weakref

要使用gc模块,请使用import −

import weakref

示例

现在让我们看一个例子 −

import weakref

# 创建Demo()函数
class Demo:
   instanceArr = []
   def __init__(self, name=None):
      self.__class__.instanceArr.append(weakref.proxy(self))
      self.name = name

# 创建3个对象
ob1 = Demo('ob1')
ob2 = Demo('ob2')
ob3 = Demo('ob3')

# 显示实例
for i in Demo.instanceArr:
   print(i.name)

输出

ob1
ob2
ob3

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程