抽象用于隐藏函数的内部功能,使用户只与函数的基本实现交互,而内部工作被隐藏起来。用户只知道“函数做什么”,但不知道“它是如何做到的”

简单来说,我们都使用智能手机,并且非常熟悉其功能,如相机、语音录制、拨打电话等,但我们不知道这些操作在后台是如何发生的。再举一个例子,当我们使用电视遥控器增加音量时,我们不知道按下一个键如何增加电视的音量。我们只知道按“+”按钮可以增加音量。

这正是抽象在面向对象概念中的工作方式。

为什么抽象很重要?

在Python中,抽象用于隐藏不相关的数据/类以减少复杂性。它还增强了应用程序的效率。接下来,我们将学习如何使用Python程序实现抽象。

Python中的抽象类

在Python中,可以通过使用抽象类和接口来实现抽象。

包含一个或多个抽象方法的类被称为抽象类。抽象方法不包含其实现。抽象类可以被子类继承,抽象方法在子类中得到定义。抽象类用于作为其他类的蓝图。抽象类在设计大型功能时很有用。抽象类还有助于为不同组件的不同实现提供标准接口。Python提供了abc模块来在Python程序中使用抽象。让我们看看以下语法。

语法

from abc import ABC  
class ClassName(ABC):  

我们从abc模块中导入ABC类。

抽象基类

抽象基类是接口的一种通用应用程序,用于一组子类。它可以被第三方使用,该第三方将提供实现,例如插件。在处理难以记住所有类的大型代码库时,它也很有用。

抽象类的工作原理

与其他高级语言不同,Python本身不提供抽象类。我们需要导入abc模块,该模块提供了定义抽象基类(ABC)的基础。ABC的工作方式是将基类的方法装饰为抽象方法。它将具体类注册为抽象基类的实现。我们使用@abstractmethod装饰符来定义抽象方法,或者如果不提供方法的定义,它将自动成为抽象方法。让我们看一个示例。

示例 -

# Python program demonstrate  
# abstract base class work   
from abc import ABC, abstractmethod   
class Car(ABC):   
    def mileage(self):   
        pass  
  
class Tesla(Car):   
    def mileage(self):   
        print("The mileage is 30kmph")   
class Suzuki(Car):   
    def mileage(self):   
        print("The mileage is 25kmph ")   
class Duster(Car):   
     def mileage(self):   
          print("The mileage is 24kmph ")   
  
class Renault(Car):   
    def mileage(self):   
            print("The mileage is 27kmph ")   
          
# Driver code   
t= Tesla ()   
t.mileage()   
  
r = Renault()   
r.mileage()   
  
s = Suzuki()   
s.mileage()   
d = Duster()   
d.mileage()  

输出:

The mileage is 30kmph
The mileage is 27kmph 
The mileage is 25kmph 
The mileage is 24kmph

解释 -

在上面的代码中,我们导入了abc模块以创建抽象基类。我们创建了一个名为Car的类,它继承了ABC类,并定义了一个名为mileage()的抽象方法。然后我们从三个不同的子类继承了基类,并以不同的方式实现了抽象方法。我们创建了子类的对象以调用抽象方法。

让我们看另一个示例。

示例 -

# Python program to define   
# abstract class  
  
from abc import ABC  
  
class Polygon(ABC):   
  
   # abstract method   
   def sides(self):   
      pass  
  
class Triangle(Polygon):   
  
     
   def sides(self):   
      print("Triangle has 3 sides")   
  
class Pentagon(Polygon):   
  
     
   def sides(self):   
      print("Pentagon has 5 sides")   
  
class Hexagon(Polygon):   
  
   def sides(self):   
      print("Hexagon has 6 sides")   
  
class square(Polygon):   
  
   def sides(self):   
      print("I have 4 sides")   
  
# Driver code   
t = Triangle()   
t.sides()   
  
s = square()   
s.sides()   
  
p = Pentagon()   
p.sides()   
  
k = Hexagon()   
K.sides()   

输出:

Triangle has 3 sides
Square has 4 sides
Pentagon has 5 sides
Hexagon has 6 sides

解释 -

在上面的代码中,我们定义了抽象基类Polygon,并定义了抽象方法。此基类被多个子类继承。我们在每个子类中实现了抽象方法。我们创建了子类的对象,并调用sides()方法。抽象类中定义的sides()方法从未被调用。

需要记住的要点

以下是我们应该记住有关Python中抽象基类的要点。

  • 抽象类可以包含普通方法和抽象方法。
  • 无法实例化抽象类;我们不能为抽象类创建对象。

抽象对于隐藏用户不需要了解的核心功能非常重要。我们已经涵盖了Python中抽象的所有基本概念。

标签: Tkinter教程, Tkinter安装, Tkinter库, Tkinter入门, Tkinter学习, Tkinter入门教程, Tkinter, Tkinter进阶, Tkinter指南, Tkinter学习指南, Tkinter进阶教程, Tkinter编程