欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 抽象类

程序员文章站 2022-05-22 11:14:11
...

python 抽象类

      从网上找了好多资料,对python抽象类的总结都比较乱,所以自己整理了一篇供大家学习交流

在我们了解抽象类的时候先了解一下什么是接口

1.在python中并没有interface这个关键字来声明这是个接口,如果非要模仿接口的概念就用到了第三方模块,比如:abs模块。
2、接口就是只定义了一些方法,而没有实现。【(这些方法被称为抽象方法),大家自行脑补,在一个方法中直接写了一个pass就是没有实现任何功能的方法,就叫做抽象方法】
3.这些功能需要被另一个类(B)继承,由B类实现某个功能,或者全部功能。
比如:我们常说的一些外部API的接口,只是调用,功能由调用的接口实现。

实例程序:

class Human:    #定义一个接口
   def eat(self): #抽象方法,下同
      pass
   def sleep(self):
      pass
   def play(self):
      pass
#调用接口
class People(Human):   #我们继承Human接口,通过这个类来实现功能
   def eat(self):
      print("吃饭")
   def    sleep(self):
      print("睡觉")
   def play(self):
      print("打豆豆")
#实例对象
ren = People()
ren.eat()
#此处仅代表个人观点,这个接口,有点像继承,然后方法重写,但是父类就是没有功能。

进入重点  抽象方法

     1.抽象类给我们的第一感觉就是,八九年代的抽象派的感觉,生涩难懂,其实不然,我们也就会发现这就是一个概念。

     2.抽象类,就像是类和接口的混合体,具有接口的特性,在python中利用第三方abc模块,实现抽象类。
     3抽象方法不存在重写的问题,却有实现的问题
     4含有抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法,此时也没有任何意义了。     5.在python中接口(抽象类)常用于协同工作。
注意:在python中,我们不以有无执行体来区分是否是抽象类,而是根据是否有@abc.abstractmethod装饰器作为标准。

python 抽象类

注意:不能直接实例化抽象类!!!

示例程序:
import abc  #导入abc模块
class InMa(metaclass=abc.ABCMeta):  #定义抽象方法
   @abc.abstractmethod       #定义抽象方法
   def login(self):
      pass
   @abc.abstractmethod
   def zhuce(self):
     pass
class Login(InMa):  #继承抽象类
   def __inti__(self,name,pwd):
      self.name = name
      self.password = pwd
   def login(self):           #实现抽象方法功能

      if self.name == "qq" and self.password == "111":
         print("恭喜登录成功")
      else:
         print("登录失败")

class Zc(Login):
   def __init__(self,name,pwd):
      self.name = name
      self.password = pwd
   def zhuce(self):
      print("恭喜注册成功")
      print("username:",self.name)
      print("password:",self.password)
 #实例对象
ren = Zc("Jaue","qqq")
ren.zhuce()

梦想还是要有的,万一实现了呢~~~

python 抽象类

相关标签: python 抽象类