1 接口概念
说接口概念之前我们先说一下在其他语言中不叫继承对于基类和派生类,而叫实现。
接口是派生类实现接口类而进行约束派生类的。接口中的方法不能写功能,而派生类实现了接口就需要把接口的所有方法都实现一遍。
# 其他语言继承叫实现
接口的约束性
# 其他语言接口类型 interface 只要继承(实现)接口类,那么派生类(子类)中必须有这个基类(父类)的方法 所以接口是用来约束的。
# interface 接口:
#
# def f1(self):
# pass
#
# class lei(接口):
#
# def f1(self):
# print(123)
python中没有接口类型
python中没有接口类型,单是我们可以人为的创造 约束给类。 raise 抛出异常来强制实现基类方法来做接口 用来约束
# 2 python中没有接口类型,单是我们可以人为的创造 约束给类。 raise 抛出异常来强制实现基类方法来做接口 用来约束
#
# """
#
# # python 接口构造
#
# class IOrderRepository:
#
# def fettch_one_by(self,nid):
# """
# #获取单条数据
# :param nid:
# :return:
# """
# raise Exception("子类中必须实现该方法")
#
# class OrderRepository(IOrderRepository):
#
# def __init__(self):
# pass
# def fettch_one_by(self,nid):
# pass
#
# obj = OrderRepository()
# obj.fettch_one_by(1)
# # 接口类 必须实现 切不能写任何代码,其他语言写了就报错,python我们规定不写。但不会报错
# class IFoo:
# def f1(self):
# """
#
# :return:
# """
# raise Exception("子类必须实现该方法")
#
# class Bar(IFoo):
# def __init__(self):
# pass
2 抽象类 抽象方法
1 抽象类中有普通方法,抽象方法:普通方法用来继承(普通类的特性),抽象方法用来约束(接口功能)
2 因此抽象类是普通类和接口类的整合
3 单独写抽象类没有意义,只有写了抽象方法,有了约束,子类继承时候必须实现抽象方法。
4 abc模块实现抽象类
5 如果一个抽象类全是抽象方法,则就是一个接口类了
全是普通方法,则就是一个普通类了
abc模块实现抽象类
import abc
class Foo(metaclass=abc.ABCMeta):
# 普通方法 用来实现继承
def f1(self):
print("抽象类的普通方法")
#抽象方法
@a