Python面向对象特性-多态-创新互联
Python中的多态
多态
多态指的是一类事物有多种形态。多态的实现需要依赖于继承~
创新互联建站从2013年创立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元廉江做网站,已为上家服务,为廉江各地企业和个人服务,联系电话:13518219792import abc
class File(metaclass=abc.ABCMeta):
@abc.abstractmethod
def read(self):
pass
@abc.abstractmethod
def write(self):
pass
class Txt(File): # 文本数据的读写
def read(self):
print('读取文本数据')
def write(self):
print('写入文本数据')
class Process(File): # 进程数据的读写
def read(self):
print('读取进程数据')
def write(self):
print('写入进程数据')
txt = Txt()
process = Process()
txt.read()
process.read()
上述示例中,Txt,Process都继承自 接口类File,且都实现了 read,write方法,但read,write方法的实现都各不相同。Txt,Process为同一类事物,不同的形态体现在它们都有read,write方法,但是实现的方式都不一样~
多态性
多态性是多态的一种应用:在不考虑实例类型的情况下使用实例。使用的场景往往是:调用不同对象的同名方法,不同的对象会用不同的方式来实现类似的功能;
调用者无需关心对象之间的差异性,只需根据不同的场景调用不同对象的同名方法即可~
def read(obj):
obj.read()
def write(obj):
obj.write()
read(txt)
read(process)
write(txt)
write(process)
Txt,Process类中的read,write方法是应对不同的场景实现数据的读取和写入,所以在使用函数read,write时候只需要根据场景选择对象即可~
鸭子类型
关于列表和元组的示例:
m_lst = [1, 2, 3]
m_tuple = ('a', 'b', 'c', 'd')
print(m_lst.__len__()) # 3
print(m_tuple.__len__()) # 4
print(m_lst.count(1)) # 1
print(m_tuple.count('c')) # 1
通过源码可以看到 list 和 tuple 都是继承自 object 类,相互之间没有关系,但是它们都有很多功能类似的同名方法。这就是Python崇尚的鸭子类型,两个类之间有很多的相似之处,功能也类似,但是这两个类之间没有继承关系,也不是继承于同一个接口类或者抽象类,而是两个独立的类,这就保证了程序组件的松耦合度~
例如上述的Txt,Process类也可以通过这种方式来实现:
class Txt(): # 文本数据的读写
def read(self):
print('读取文本数据')
def write(self):
print('写入文本数据')
class Process(): # 进程数据的读写
def read(self):
print('读取进程数据')
def write(self):
print('写入进程数据')
.................^_^
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享标题:Python面向对象特性-多态-创新互联
本文URL:http://myzitong.com/article/cdcgcd.html