如何在 Python 中获取对象的名称?
不,在 Python 中没有办法获取对象的名称。原因是对象本身并没有名称。
假设我们有以下代码。在这里,我们无法找到实际的实例名称。由于 ob1 和 ob2 都绑定到相同的值,我们无法得出 ob1 或 ob2 的实例名称的结论 -
示例
# Creating a Demo Class class Demo: pass Example = Demo ob1 = Example() ob2 = ob1 print(ob2) print(ob1)
输出
<__main__.Demo object at 0x00000250BA6C5390> <__main__.Demo object at 0x00000250BA6C5390>
如上所示,我们无法显示对象的精确名称。但是,我们可以显示实例和计数,如下面的示例所示。
获取类的实例
在这个例子中,我们创建了一个 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 0x7f18e74fe4c0> <__main__.Demo object at 0x7f18e7409d90> <__main__.Demo object at 0x7f18e7463370> <__main__.Demo object at 0x7f18e7463400>
显示类的实例计数
在这个例子中,我们将统计实例并显示 -
示例
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
广告