如何在Python中获得一个类的名称

1,209 阅读5分钟

Python以其面向对象的编程支持而闻名,特别是类和对象。它有一个定义明确的程序结构,并允许轻松修改代码。因为类是现成的,所以代码可以重复使用,而且它还具有封装、抽象和多态性的优点。通过例子和输出,我们将在本文中研究Python类以及它是如何获得对象的类名的。让我们开始吧!

Python 中类的定义

一个类,就像一个对象的构造函数,可以被认为是用户定义的制造对象的模式。在python程序中利用 "类 "这个术语,你可以建立类。一个类是一种数据结构,可以包含数据和成员方法。

类是OOP的核心,而对象正是通过它们生成的。类被定义为对象的描述或定义。类描述了对象的特征,但与对象本身没有关系。

此外,众多的对象都由一个类来描述。编程遵循一个流程,首先指定类,然后是对象描述。每个类都有自己的名字和自己的一套属性和行为。

Python中的类的语法

下面是创建Python类的语法

class ClassName:

#code line 1

.

.

.

#code lines n

类的另一个术语是程序。方法是类中函数的名称。它们有一个代码块,可以被调用来执行一系列的活动并返回结果。

例子 1:在 Python 中创建一个类

类是用术语class创建的,每个类都有自己的属性集。属性指的是组成一个类的变量。点 (.) 操作符通常用来访问始终公开的属性。

在下面的python脚本中,我们通过使用术语 "class "创建了一个类。类的名称被定义为 "Flowers"。我们已经生成了一个类的初始构造函数,它接收了一个变量 "f_name" 和 "f_color"。然后,我们通过使用点运算符来访问该变量。这个函数在这里被构造为一个 "函数",我们在其中传递了类的实例 "self"。打印表达式显示类的属性值。然后,在最后,我们在一个新的变量 "flower1 "中初始化了f_name和f_color的值,并调用了函数()。

class Flowers:

def __init__(self, f_name, f_color):

self.f_name = f_name

self.f_color = f_color

def function(self):

print("Flower is " + self.f_name)

flower1 = Flowers("Rose", "Red")

flower1.function()

类属性值在屏幕上的显示如下。

例 2: 通过使用 Python 中的 __class__.__name__ 获得一个类名

__class__属性,一般适用于我们要获取的对象的类,是在Python中获取类名的第一种也是最简单的方法。__name__可以和__class__一起使用,以获得对象的类。为了确定一个对象的类,下面的代码同时采用了 __class__ 和 __name__。

我们已经建立了一个名字为 "animal" 的类。init构造函数被调用,在这里我们传递了一个对象 "self "和变量名 "animal "作为一个参数。然后,实例变量 "animal "被定义。为了显示类的名称,我们首先将该类的对象构造为 "obj1",然后使用class.name来显示其名称。

class animal:

def __init__(self, animal):

self.animal = animal

obj1 = animal("Horse")

print (obj1.__class__)

print (obj1.__class__.__name__)

类名被python编译器在给定的提示外壳中访问。

例3:通过在Python中使用type()和__name__属性获取类名

另一个选择是利用 type() 方法,它是一个内置的 Python 方法,用于确定对象的类型或类名。正如在下面的例子中所看到的,你必须把 type() 方法和 __name__ 变量结合起来以获得类名。

在下面的python脚本中,我们有一个名字为 "employee "的类。在创建了一个类之后,我们调用了一个构造函数,向其传递了一个对象 "self "和变量 "employee"。然后,我们创建了一个实例变量 "self.employee"。类对象的ID被确定为 "emp_name",并通过调用类名进行初始化。类型方法是在打印函数中生成的。我们用__name__传递了类的对象。所提供的类的名称将通过这个方法获得。

class employee:

def __init__(self, employee):

self.employee = employee

emp_name = employee("kalsoom")

print (type(emp_name).__name__)

因此,我们通过类型和__name__属性方法得到了类的名称,输出结果如图所示。

例四:通过使用Python中的嵌套类获得类名

有的时候,你需要在我们的程序中为嵌套类获得一个类名。为了获得主管对象的名称,在这种情况下,我们可以使用 __qualname__ 属性而不是 __name__ 属性。

在这里,我们有两个类被定义为 "果汁 "和 "餐点"。同时,我们为这两个类创建了变量实例,如源代码中所示。在 "juice "类里面调用 "餐 "的对象,并传递一个变量 "j "作为参数。然后,类 "juice "对象 "obj_juice "被建立,在这里我们为实例juice和 meal设置了值。打印函数有两个方法"__name__"来获取类的名称,以及__qualname__来获取限定的对象名称。

class Juice:

def __init__(self, j_name, j):

self.j_name = j_name

self.obj_meal = self.Meal(j)

 

class Meal:

def __init__(self, obj_meal):

self.obj_meal = obj_meal

 

obj_juice = Juice("pineapple", ['fries'])

print(obj_juice .obj_meal.__class__.__name__)

print(obj_juice .obj_meal.__class__.__qualname__)

产生的输出结果如下。

结论

Python中面向对象编程的多种好处包括抽象、多态性和其他特性。它通过增强代码的结构和允许代码被重用,促进了代码的简单和无错误的维护。本文演示了如何使用Python中的__class__、type()和__qualname__方法来快速获得一个类名。为了使编程简单高效,正确掌握和理解这一策略是很重要的。