Size: 2257
Comment:
|
← Revision 3 as of 2009-12-25 07:16:31 ⇥
Size: 2267
Comment: converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
{{{ | |
Line 51: | Line 52: |
}}} |
褪去许多人认为"花哨怪异"的语法以及似乎"眼花缭乱"的各种模块等华丽的外衣,Python还剩下什么?对象! 对象是Python的最小的单元。要想拾起python,你最好忘记int,忘记string,忘记char,你最好也忘记public, private, protect(因为最小的对象仅仅是一个概念)... 忘不了,你只能得到手中的剑,忘记了,你就可以掌握心中的剑。 下面将以一小段代码,期望能让你对Python的对象有一点点的了解... # -*- coding: utf8 -*- # 下面""" """是除了#之外的Python的令一种注释方法 """ 这个类继承了object, object是Python的最小单元,可以在Python的">>>"控制台用dir(objct)或者dir (__builtins__.object)命令查看它的属性,可以看到__setattr__, __new__...他们是python中任何对象都会具有的属性,你也可以dir(1)和dir(int)看看,可看到更多内容,在这里,1作为一个实例化的int对象出现 而这些__xxx__属性有什么用呢?在接下来的代码中,我们可以了解__getitem__和__setitem__有什么用(这两个属性在dict对象中非常重要) """ class WPUnit(object): # 对象实例化 def __init__(self): self._res = {} def __setitem__(self, key, val): self._res[key] = val def __getitem__(self, key): if self._res.has_key(key): return self._res[key] else: res = WPUnit() self._res[key] = res return res a =WPUnit() a['a']['b']['c']['d']['e']['f']['g'] = 5 print a['a']['b']['c']['d']['e']['f']['g'] a['a'] = 'vv' print a['a'] 将上述代码保存为文件,然后执行。 我们可看到 5 vv 在a['a'] = 'vv'中,程序做了一步:调用__setitem__ 在print a['a']中,程序做了两步: 调用__getitem__(然后再调用一个__str__,这是任何对象在被print之前都会调用), 然后print 在(a['a']['b']['c']...)['g'] = 5 中先做了__getitem__... 最后在运算到xx['g']时,调用__setitem__... 在print a['a']['b']['c']...['g']中,a对象一直调用__getitem__(最后调用__str__),然后再执行print 总之,Python是骨子里透着"对象气息"的编程语言。