设为首页 收藏本站
查看: 817|回复: 0

[经验分享] Python基础10 反过头来看看

[复制链接]

尚未签到

发表于 2015-4-18 10:53:40 | 显示全部楼层 |阅读模式
  作者:Vamei 出处:http://www.iyunv.com/vamei 欢迎转载,也请保留这段声明。谢谢!
  
  从最初的“Hello World”,走到面向对象。该回过头来看看,教程中是否遗漏了什么。
  我们之前提到一句话,"Everything is Object". 那么我们就深入体验一下这句话。
  
  需要先要介绍两个内置函数,dir()和help()
  dir()用来查询一个类或者对象所有属性。你可以尝试一下
  >>>print dir(list)
  help()用来查询的说明文档。你可以尝试一下
  >>>print help(list)
  (list是Python内置的一个类,对应于我们之前讲解过的列表)
  

list是一个类
  在上面以及看到,表是Python已经定义好的一个类。当我们新建一个表时,比如:
  >>>nl = [1,2,5,3,5]
  实际上,nl是类list的一个对象。
  
  实验一些list的方法:
  >>>print nl.count(5)       # 计数,看总共有多少个5
  >>>print nl.index(3)       # 查询 nl 的第一个3的下标
  >>>nl.append(6)            # 在 nl 的最后增添一个新元素6
  >>>nl.sort()               # 对nl的元素排序
  >>>print nl.pop()          # 从nl中去除最后一个元素,并将该元素返回。
  >>>nl.remove(2)            # 从nl中去除第一个2
  >>>nl.insert(0,9)          # 在下标为0的位置插入9
  总之,list是一个类。每个列表都属于该类。
  Python补充中有list常用方法的附录。
  

运算符是特殊方法
  使用dir(list)的时候,能看到一个属性,是__add__()。从形式上看是特殊方法(下划线,下划线)。它特殊在哪呢?
  这个方法定义了"+"运算符对于list对象的意义,两个list的对象相加时,会进行的操作。
  >>>print [1,2,3] + [5,6,9]
  
  运算符,比如+, -, >, >>print [1,2,3] - [3,4]
  会有错误信息,说明该运算符“-”没有定义。现在我们继承list类,添加对"-"的定义



class superList(list):
def __sub__(self, b):
a = self[:]     # 这里,self是supeList的对象。由于superList继承于list,它可以利用和list[:]相同的引用方法来表示整个对象。
b = b[:]        
while len(b) > 0:
element_b = b.pop()
if element_b in a:
a.remove(element_b)
return a
print superList([1,2,3]) - superList([3,4])
  内置函数len()用来返回list所包含的元素的总数。内置函数__sub__()定义了“-”的操作:从第一个表中去掉第二个表中出现的元素。如果__sub__()已经在父类中定义,你又在子类中定义了,那么子类的对象会参考子类的定义,而不会载入父类的定义。任何其他的属性也是这样。
  (教程最后也会给出一个特殊方法的清单)
  
  定义运算符对于复杂的对象非常有用。举例来说,人类有多个属性,比如姓名,年龄和身高。我们可以把人类的比较(>,

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58418-1-1.html 上篇帖子: Python进阶03 模块 下篇帖子: Python进阶01 词典
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表