博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python----面向对象---鸭子类型
阅读量:5360 次
发布时间:2019-06-15

本文共 985 字,大约阅读时间需要 3 分钟。

Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’

python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象

也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。

 

例如:利用标准库中定义的各种‘与文件类似’的对象,尽管这些对象的工作方式像文件,但他们没有继承内置文件对象的方法

1 class Disk: 2     def read(self): 3         print('disk read') 4  5     def write(self): 6         print('disk write') 7  8  9 class Text:10     def read(self):11         print('Text read')12 13     def write(self):14         print('Text write')15 16 17 disk = Disk()18 text = Text()19 20 disk.read()21 disk.write()22 23 text.read()24 text.write()

结果为:

disk readdisk writeText readText write

还有一种序列类型:序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系

1 s = str('hello') 2 l = list([1, 2, 3]) 3 t = tuple(('a', 'b', 'c')) 4  5 print(l.__len__()) 6 print(s.__len__()) 7 print(t.__len__()) 8  9 10 def len(obj):11     return obj.__len__()12 13 14 print(len(l))15 print(len(s))16 print(len(t))17 18 结果为:19 320 521 322 323 524 3

实现了可以在不考虑对象类型的情况下使用len方法

转载于:https://www.cnblogs.com/xudachen/p/8608917.html

你可能感兴趣的文章
ARM 的Thumb状态测试
查看>>
windows下读取utf-8文件
查看>>
apache 启动不了的排查方法
查看>>
Java有没有goto?
查看>>
(转)makefile 的用法
查看>>
求不相邻金币相加和的最大值--动态规划1
查看>>
[转][osg]探索未知种族之osg类生物【目录】
查看>>
四十九. Zabbix报警机制 、 Zabbix进阶操作 、 监控案例
查看>>
元类中__new__ 与 __init__的区别--day27
查看>>
占小狼的简书博客
查看>>
struts2__action执行顺序
查看>>
php异常处理
查看>>
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>