如何在Python中獲取例項的類名?
Python很好地支援面向物件的程式設計,包括類和物件的概念。它提供了清晰的程式結構和簡單的程式碼修改。由於類的可共享性,程式碼可以重用,並提供抽象、封裝和多型性的許多好處。
Python類是建立Python物件的“藍圖”。
在Python中獲取例項的類名
確定Python例項的類名有兩種方法:
使用`type()`函式和`__name__`函式。
使用`__class__`和`__name__`的組合。
一個名為`__name__`的唯一內建變數基本上提供了其使用位置的當前模組的名稱。
由於Python不像其他類似的程式語言(如C/C++、Java等)那樣具有`main()`方法,因此如果原始檔用作主程式,直譯器會將`__main__`的值設定為`__name__`。
此外,如果從另一個模組匯入檔案,則`__name__`將設定為匯入模組的名稱。
以下程式碼使用`type()`函式和`__name__`變數來檢索物件的型別或類
示例
class number: def __init__(self, number): self.number = number x = number(1) print (type(x).__name__)
輸出
number
在這篇文章中,我們將學習如何使用上述方法在Python中獲取例項的類名。
使用`__class__.__name__`
Python的`__class__`屬性是獲取類名的第一種也是最簡單的方法,它只是指我們要檢索的物件的類。在這裡,我們將該屬性與`__name__`屬性結合起來,以確定物件或例項的類名。唯一的Python變數`__name__`指定其使用位置的當前模組的名稱。
注意 - 你必須為該類建立物件才能使用`class.name`顯示其名稱。
示例
以下是使用`__class__.__name__`方法在Python中獲取例項類名的示例
class animal: def __init__(self, animal): self.animal = animal l = animal("Lion is the animal") print (l.__class__) print (l.__class__.__name__)
輸出
以下是上述程式碼的輸出:
<class '__main__.animal'> animal
使用`type()`和`__name__`屬性
另一種方法是使用Python的內建`type()`方法來確定物件的型別或類。要獲取類名,必須將`type()`函式與`__name__`變數結合使用。
示例
以下是使用`type()`和`__name__`屬性在Python中獲取例項類名的示例:
class animal: def name(self, name): return name a = animal() print(type(a).__name__)
輸出
以下是上述程式碼的輸出:
animal
示例
讓我們檢查一下以下示例中所示的簡單字串的類名:
d = "Python Program" print(type(d).__name__)
輸出
正如你在下面的輸出中看到的,字串例項的類是“str”。
str
示例
使用`itertools`模組的“count”例項來獲取類名,如下例所示:
import itertools d = itertools.count(2) print(type(d).__name__)
輸出
以下是上述程式碼的輸出:
count
示例
透過定義一個空列表,找到“列表”例項的類,如下面提到的示例所示:
the_list = [] t = type(the_list) name_of_class = t.__name__ print(name_of_class)
輸出
以下是上述程式碼的輸出:
list
示例
類名也可以作為字串使用,如下例所示:
class S: pass d = S() print(str(d.__class__))
輸出
以下是上述程式碼的輸出:
<class '__main__.S'>
使用巢狀類(使用`__qualname__`代替`__name__`)
在某些情況下,你可能希望在具有巢狀類的程式中獲取類名。在這種情況下,你可以使用`__qualname__`屬性而不是`__name__`屬性來檢索限定物件的名稱。
示例
列出了兩個類:“Animal”和“Lion”。此外,如下面的程式碼所示,我們已經為這兩個類建立了變數例項。“Lion”的物件在“Animal”類中被呼叫,並被賦予一個名為“a”的引數,該引數是一個變數。
然後在“Animal”物件的“obj_Animal”類中設定“Animal”和“Lion”例項的值。`__name__`方法和`__qualname__`方法都在`print`函式中可用,分別用於檢索類名和限定物件名。
class Animal: def __init__(self, a_name, a): self.a_name = a_name self.obj_Lion = self.Lion(a) class Lion: def __init__(self, obj_Lion): self.obj_Lion = obj_Lion obj_Animal = Animal("Sher", "King") print(obj_Animal. obj_Lion.__class__.__name__) print(obj_Animal. obj_Lion.__class__.__qualname__)
輸出
以下是上述程式碼的輸出:
Lion Animal.Lion