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