多态
什么是多态动态绑定(在继承的背景下使用,有时也称为多态性)
多态性是指在不考虑实例类型的情况下使用实例,多态性分为静态多态性和动态多态性
静态多态性:如任何类型都可以用运算符+进行运算
动态多态性:调用方法的时候
# 鸭子类型
Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’
python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象
也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。
例1:利用标准库中定义的各种‘与文件类似’的对象,尽管这些对象的工作方式像文件,但他们没有继承内置文件对象的方法
class File:
def read(self):
pass
def write(self):
pass
class Disk:
def read(self):
print('disk read')
def write(self):
print('disk write')
class Text:
def read(self):
print('text read')
def write(self):
print('text write')
disk = Disk()
text = Text()
disk.read()
disk.write()
text.read()
text.write()
例2:序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系
序列类型:
列表list、元组tuple、字符串str
l = list([1, 2, 3])
t = tuple(('a', 'b', 'c'))
s = str('hello')
print(l.__len__())
print(t.__len__())
print(s.__len__())
def len(obj):
return obj.__len__()
print(len(l))
print(len(t))
print(len(s))