标签:使用 ESS 应用 lis self 调用 一个 info turn
多态指的是同一种事物的多种形态
水--》冰、水蒸气、液态水
动物--》人、狗、猪
多态性:
继承同一个类的多个子类中有相同的方法名
那么子类产生的对象就可以不用考虑具体的类型而直接调用功能
Animal()--》强调:父类是用来指定标准的,不能被实例化,也就是说父类中被@abc.abstractmethod装饰的方法,子类必须也要有,如果没有的话则会报错,这个拥有被装饰的方法的类称为抽象类
由于动物都有叫,如果人的叫使用speak();狗的叫使用talk();猪的叫用jiao(),也就是说对于不同的动物有不同的叫方法,那么对于使用者来说,使用起来非常麻烦。因此我们可以规定人、狗、猪的叫都是speak(),那么我们以后使用某个动物叫的方法,只需要调用speak即可
import abc
class Animal(metaclass=abc.ABCMeta):
@abc.abstractmethod
def speak(self):
print('11111')
@abc.abstractmethod
def eat(self):
pass
class People(Animal):
def speak(self):
print('say hello')
def eat(self):
pass
class Dog(Animal):
def speak(self):
print('汪汪汪')
def eat(self):
pass
class Pig(Animal):
def speak(self):
print('哼哼哼')
def eat(self):
pass
peo1 = People()
dog1 = Dog()
pig1 = Pig()
peo1.speak()
say hello
dog1.speak()
汪汪汪
pig1.speak()
哼哼哼
def my_speak(animal):
animal.speak()
my_speak(peo1)
say hello
my_speak(dog1)
汪汪汪
my_speak(pig1)
哼哼哼
l = [1, 2, 3]
s = 'helllo'
t = (1, 2, 3)
print(l.__len__())
print(s.__len__())
print(t.__len__())
# 列表、字符串、元组规定了计算这些数据类型的长度就必须使用len()方法
# def len(obj):
# return obj.__len__()
3
6
3
print(len(l)) # l.__len__()
print(len(s)) # s.__size__()
print(len(t)) # t.__width__()
3
6
3
class Disk:
"""硬盘"""
def read(self):
print('disk read')
def write(self):
print('disk wirte')
class Process:
"""进程"""
def read(self):
print('process read')
def write(self):
print('process wirte')
class File:
"""文件"""
def read(self):
print('file read')
def write(self):
print('file wirte')
obj1 = Disk()
obj2 = Process()
obj3 = File()
obj1.read()
obj1.write()
disk read
disk wirte
标签:使用 ESS 应用 lis self 调用 一个 info turn
原文地址:https://www.cnblogs.com/nickchen121/p/10989309.html