如何在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