云速成美站做网站好吗,深圳网页制作培训课程价格,全网seo,专业的网站建设公司排名Python中关于子类约束的开发规范
我们知道#xff0c;在java和C#中有一种接口的类型#xff0c;用来约束实现该接口的类#xff0c;必须要定义接口中指定的方法
而在python中#xff0c;我们可以基于父类子类异常来仿照着实现这个功能
class Base:def func():raise NotI…Python中关于子类约束的开发规范
我们知道在java和C#中有一种接口的类型用来约束实现该接口的类必须要定义接口中指定的方法
而在python中我们可以基于父类子类异常来仿照着实现这个功能
class Base:def func():raise NotImplementedError(.authenticate() must be overridden.) # 必须实现该方法class Foo(Base):pass如果你在子类Foo中没有重写父类的func方法总程序源码的其他地方一定会使用Foo.func()从而导致程序报错
当然我们还有另外一种方法就是通过python内置的abc模块来进行约束
import abcclass CacheBase(metaclassabc.ABCMeta):abc.abstractmethoddef get(self, key):passabc.abstractmethoddef set(self, key, value):passclass RedisCache(CacheBase):passredis_cache RedisCache()在这个实例中我们通过bac模块中的abc.ABCMeta来创建了一个类CacheBase并在其中定义了2个方法用修饰器abc.abstractmethod修饰
当有子类继承并实例化对象时如果子类没有实现其中被abc.abstractmethod修饰器修饰的方法就会报错在控制台中也会有提示让我们重写方法 当我们重写方法后程序执行就不会报错