Flask接口签名sign原理与实例代码浅析
585
2022-08-24
python中的抽象类说明(python抽象数据类型)
抽象类是一个特殊的类,只能被继承,不能实例化,抽象类中可以有抽象方法和普通方法。
注意:子类继承了抽象类父类,子类必须实现父类的抽象方法。
不能直接创建抽象对象必须用一个子类来继承抽象父类子类必须覆盖重写抽象父类创建子类对象进行使用
(一)定义抽象类
定义抽象类需要导入 abc模块。
from abc import ABCMeta, abstractmethod
(二)定义抽象方法
抽象方法:只定义方法,不具体实现方法体。
在定义抽象方法时需要在前面加入:@abstractmethod
抽象方法不包含任何可实现的代码,因此其函数体通常使用pass。
class ABC(metaclass=ABCMeta): @abc.abstractmethod def setA(self, a): pass @abc.abstractmethod def getA(self): pass
(三)继承抽象类
class Test(ABC): __a = None def setA(self, a): self.__a = a def getA(self): print(self.__a)if __name__ == '__main__': t = Test() t.setA(10) t.getA()# 10 打印输出
(四) 直接实例抽象类
class ABC(metaclass=abc.ABCMeta): @abc.abstractmethod def setA(self, a): pass @abc.abstractmethod def getA(self): passif __name__ == '__main__': ABC()
直接运行报错:
Traceback (most recent call last): File "test.py", line 19, in
TypeError:无法使用抽象方法getA,setA实例化抽象类ABC
注意:
抽象类中不一定包含抽象方法, 但是有抽象方法必定是抽象类抽象的子类必须重写所有父类抽象方法, 否则运行报错, 排除子类也是抽象类
补充:
python中关于这个里边的私有方法(private)、保护方法(protected)、公开方法(public)
__foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。foo:就是public方法
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~