面向对象-鸭子类型

Posted hexiaorui123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象-鸭子类型相关的知识,希望对你有一定的参考价值。

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()


#序列类型:列表list,元组tuple,字符串str

l = list([1, 2, 3])
t=tuple((a,b))
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))

 

以上是关于面向对象-鸭子类型的主要内容,如果未能解决你的问题,请参考以下文章

面向对象-鸭子类型

面向对象之组合封装多态性鸭子类型

面向对象的三大特性 鸭子类型 类的约束 super的深度剖析

Python面向对象编程——多态多态性鸭子类型

面向对象三大特性

面向对象编程思想(前传)--你必须知道的javascript