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
示例
通过定义一个空列表,找到“lists”实例的类,如下所示的示例中所述。
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__
”来检索类名和限定对象名。
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