作用:一个接口,多种实现
目的:接口的重(chong)用
刚一开始可能会不理解,什么接口,怎么实现,下面我门就通过一个例子来看一下多态是怎么实现的
class People(object):
def __init__(self, name):
self.name = name
class Man(People):
def walk(self):
print('%s is walking' % self.name)
class Woman(People):
def walk(self):
print('%s is walking' % self.name)
def people_walk(obj):
obj.walk()
man1 = Man('xiaoming')
man1.walk()
man2 = Woman('ruhua')
man2.walk()
简单的三个类,两个子类都继承了父类People,父类中有构造函数初始化name变量,两个子类中都有一个walk函数,实例化了两个对象man1和man2,分别调用了walk函数,实现了输出这两句话
但是我们能不能写一个函数,当作一个接口,传入对象就可以执行walk函数,而不是用这个对象来调用walk函数呢?
写了一个people_walk的函数,实现了这个接口,但是是写在类外,有没有可以优化的地方呢?
class People(object):
def __init__(self, name):
self.name = name
@staticmethod
def people_walk(obj):
obj.walk()
class Man(People):
def walk(self):
print('%s is walking' % self.name)
class Woman(People):
def walk(self):
print('%s is walking' % self.name)
# def people_walk(obj):
# obj.walk()
man1 = Man('xiaoming')
# man1.walk()
man2 = Woman('ruhua')
# man2.walk()
People.people_walk(man1)
People.people_walk(man2)
我们把people_walk函数移到了父类中,并且用了一个类似装饰器的东西@staticmethod
(具体请戳静态方法,类方法,属性方法)
看,walk函数有了一个共同的接口:
People.people_walk()
想让谁走就把谁传进去就行了
这样,我们就实现了一个接口,多种实现
转载请注明出处
python自学技术互助扣扣群:670402334
网友评论