|
Size: 2267
Comment:
|
← Revision 3 as of 2009-12-25 07:16:31 ⇥
Size: 2267
Comment: converted to 1.6 markup
|
| No differences found! | |
褪去许多人认为"花哨怪异"的语法以及似乎"眼花缭乱"的各种模块等华丽的外衣,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是骨子里透着"对象气息"的编程语言。