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
# Create a Class
class Demo:
   pass

# Four objects
ob1 = Demo()
ob2 = Demo()
ob3 = Demo()
ob4 = Demo()

# Display all instances of a given class
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

# Create a Class
class Demo(object):
   pass

# Creating 4 objects
ob1 = Demo()
ob2 = Demo()
ob3 = Demo()
ob4 = Demo()

# Calculating and displaying the count of instances
res = sum(1 for k in gc.get_referrers(Demo) if k.__class__ is Demo)
print("Count the instances = ",res)

输出

Count the instances = 4

使用weakref模块显示类的实例

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

pip install weakref

使用 gc 模块,使用 import 语句 −

import weakref

示例

现在让我们来看一个示例 –

import weakref

# Create a Demo() function
class Demo:
   instanceArr = []
   def __init__(self, name=None):
      self.__class__.instanceArr.append(weakref.proxy(self))
      self.name = name

# Create 3 objects
ob1 = Demo('ob1')
ob2 = Demo('ob2')
ob3 = Demo('ob3')

# Display the Instances
for i in Demo.instanceArr:
   print(i.name)

输出

ob1
ob2
ob3

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程