如何在 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 的值。print 函数中同时提供了“__name__”方法和“__qualname__”方法,分别用于检索类名和限定对象名。
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