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__方法来快速获得一个类名。为了使编程简单高效,正确掌握和理解这一策略是很重要的。