如何在 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

更新于: 2022-09-16

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告