如何在 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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.