接口
当多个类都有同样的方法,此时可以把相同的方法提练出来放在父类,但对继承父类的子类作约束就要用到接口了。
下面来段伪代码,在其它语言中普遍使用的语法,不适于python,这里主要学习其思想1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16interface IFoo(): # 这个叫IFoo接口,约束实现该接口的类必须实现定义的方法
def exec(self):pass
class A(IFoo): # 这个叫实现了IFoo接口,接口中的方法必须在当前类实现
def exec(self):
return "A.exec"
class B(IFoo):
def exec(self):
return 'B.exec'
def f1(arg):
arg.exec()
obj = A()
print(f1.obj)
上面就是接口的概念或者用法,下面是用抽象类、抽象方法实现同样功能的原理伪代码1
2
3
4
5
6
7
8
9
10
11
12AbstractClass Foo(): 抽象类,抽象方法(有继承的特性,也有约束的特性)
def abstractmethod():pass
class A(Foo):
def exec(self):
return 'A.exec'
def f1(self):
return "A.f1"
obj = A()
obj.exec()
那么如何用代码实现python抽象类、抽象方法呢?
要用到from abc import abstractmethod,ABCMeta
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17from abc import abstractmethod,ABCMeta
class IFoo(metaclass=ABCMeta):
@abstractmethod
def exec(self):pass
def f1(self):
return "cloud implement really method"
class A(IFoo): # 当前类继承了抽象类,当前类必须实现抽象类中的所有抽象方法,其它方法可以不用定义且可以直接继承使用。
def exec(self):
return "really method"
obj = A()
print(obj.exec())
print(obj.f1())
好了, 这个接口或抽象类、抽象方法的学习完结。