要获取实例的类名称,您可以在Python中使用__ class ______________________________________________________________________________________________________________________________________________________________________________________________________。
获取实例的类名称 是一个有用的操作 Python 用于调试,记录,主要用于动态编程。这有助于决定要使用的对象的类型。在此博客中,让我们探索在Python中获取实例的类名的多种方法。
目录:
在Python中获取实例的类名称的方法
Python有各种方法可以获取实例的类名:
方法1:使用__ Class __.__ name __ in python
此方法通过__class__属性直接介绍对象的类名。
例子:
输出:

解释: __Class__给出了对象类的引用,__ -Name__提取了类的名称并返回Intellipaat。
方法2:使用type()和__ -name__ in Python
类型(对象)提供了对象的类,该类别指属性中的类,__ -Name__以字符串格式为您提供类的名称。
例子:
输出:

解释: 类型(对象)返回对象(类)的类型,__ -Name__获取类名称并返回“ IntellipaatCourses”。
方法3:使用装饰器在Python中获取班级名称
带有@property的类装饰器可访问属性并返回类名,而无需调用该方法。
例子:
输出:

解释: @property装饰器将CLS方法转换为返回对象的类名称的属性。当您访问A.CLS时,它将类的名称打印为“ Intellipaat_guide”。
方法4:使用嵌套类以获取Python的类名称。
嵌套的班级以python的名字命名。嵌套的类方法使用__qualname__赋予该类的完整路径。与__NAME__相比,它提供了详细的参考。
例子:
输出:

解释: 一个名为“ Intellipaat”的类是由内部类“博客”设计的。 __NAME__给出嵌套类的名称; __qualname__以其完全合格的名称(包括外部类的名称)提供了它。
方法5:使用python中的__qualname__属性
__qualname__属性为这些类别提供了完全合格的名称,尊重其有关嵌套类的范围。
例子:
输出:

解释: __qualname__属性如果嵌套了,可以将班级名称与父母一起填充。在这里,它返回“父母”,因为孩子在父母内部包含。
每种方法的性能比较
方法 | 用例 | 方法 | 表现 |
使用__类__。名称__ | 直接访问类名。 | 直接属性访问(无函数调用)。 | 最快 |
使用类型(obj).__名称__ | 获取对象的类型 | 用途 类型() 功能 +属性访问。 | 最快 |
使用装饰器(@property) | 将班级名称作为属性返回。 | 通过属性装饰器封装逻辑。 | 缓和 |
将嵌套类与__qualname __一起使用 | 使用名称属性获取类的名称,有时具有完整的路径。 | 通过__NAME__访问嵌套的类名称。 | 稍慢 |
使用__qualname__属性 | __qualname__属性还返回完整的类层次结构。 | 提供完全合格的名称,包括其父类。 | 稍慢 |
现实世界中的用例
案例1:记录和调试: 在记录异常或系统事件的实例中,类可以确定该实例中发生的问题的原因。在复杂的代码中,它将非常有益,并与许多类别一起使用,其中包括相同的操作和行为。例如,在处理异常时,班级名称的检索将为日志提供更多细节。
案例2:序列化和挑选化: 在将对象供应到XML或JSON中时,如果保存了类名称,则正确的类实例将被重建以进行审理。因此,诸如泡菜之类的API取决于识别对象的类名称。
案例3:动态方法调用: 在反射编程中,在运行时动态调用方法。因此,获得类名称也将有助于访问方法和字段,常见用例在动态行为实现和插件中。
案例4:自动测试和模拟: 当我们使用unittest.mock之类的模拟框架时,我们需要知道类的正确名称,以帮助我们创建适当的模拟。然后,环境将完美地反映现实。
结论
获取实例的类名具有某些优点,例如调试,记录或类型检查。可以获取的最简单的班级名称是通过__ Class ____________________________________________________其他方法是@property Decorator和__qualname__在嵌套情况下有用。所有这些方法都被解释为在Python中有效获取类名称。
常见问题解答
1。获取实例的类名的最简单方法是什么?
最简单的方法是使用实例 .__类__________________________,将类名称直接返回为字符串。
2。我可以使用type()函数获取类名称吗?
是的,使用 类型(实例).__名称__ 是检索类名称的另一种直接方法。
3。我什么时候应该使用__qualname__属性?
这 __qualname__ 属性在处理嵌套类时很有用,因为它返回了完全合格的名称,包括外部类。
4。这些方法之间是否存在性能差异?
是的,访问 __类__________________________________________ 和 type().__名称__ 通常比涉及装饰工或访问的方法快 __qualname__。
5。为什么要使用装饰员获取班级名称?
使用装饰器可以在检索类名时添加自定义逻辑,这对于动态记录或跟踪实例很有用。