如何在Python中获取实例的类名?
面向对象的过程式编程,包括类和对象的概念,在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”中设置实例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
极客教程