python类的多态

1. 什么是多态
    多态指的是同一种/类事物的不同形态
 
2. 为何要用多态
    多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象
    多态性的精髓:统一
 
3. 如何用多态
例:不同的动物有不同的叫声。
class Animal:
    def speak(self):
        pass
 
class People(Animal):
    def shuo(self):
        print('say hello')
 
class Dog(Animal):
    def jiao(self):
        print('汪汪汪')
 
class Pig(Animal):
    def chang(self):
        print('哼哼哼')
 
 
obj1=People()
obj2=Dog()
obj3=Pig()
 
 
# obj1.speak()
# obj2.speak()
# obj3.speak()
 
def speak(animal):
    animal.speak()
 
 
speak(obj1)
speak(obj2)
speak(obj3)
 
s1='hello'
l1=[1,2,3]
t1=(1,2)
 
print(len(s1)) #s1.__len__()
print(len(l1)) #l1.__len__()
print(len(t1)) #t1.__len__()
'''
import abc
 
class Animal(metaclass=abc.ABCMeta):
    @abc.abstractmethod     #加上abc的装饰器就好像java里的抽象类,必须要求子类重写,否则就报错。
    def speak(self):
        pass
 
    @abc.abstractmethod
    def run(self):
        pass
 
# Animal() # 父类只是用来建立规范的,不能用来实例化的,更无需实现内部的方法
 
class People(Animal):
    def speak(self):
        print('say hello')
 
    def run(self):
        pass
 
class Dog(Animal):
    def speak(self):
        print('汪汪汪')
 
    def run(self):
        pass
 
class Pig(Animal):
    def speak(self):
        print('哼哼哼')
 
    def run(self):
        pass
 
obj1=People()
obj2=Dog()
obj3=Pig()

 

# ps:python崇尚鸭子类型(看上去像鸭子,走路,叫声等等都像鸭子,那么它就是鸭子)

posted on 2018-08-21 19:19  海龟先生  阅读(399)  评论(0编辑  收藏  举报

导航