类的内建函数
1.__getattr__ 、 __getitem__ 和 __iter__
__getattr__(self,attr) 指obj.attr 当obj搜索一个属性attr时,任何局部对象首先被找到(即实例中的__dict__),如果搜索失败,则__getattr__会被调用。
__getitem__(self,attr) 指obj[attr] ,对象被切片时,执行的函数
__iter__(self) 指遍历一个对象obj时,yield出来的值
class luck(object):
cl_attr = "cl_full"
def __init__(self):
self.ob_attr = "obj_happy"
def __getattr__(self,key):
return "getattr"
def __getitem__(self,key):
return "getitem"
def __iter__(self):
for i in ['it_goodday','it_goodnight']:
yield i
myluck = luck()
print myluck.cl_attr #获取类属性
>>cl_full
print myluck.ob_attr #获取对象属性
>>obj_happy
print myluck.other #获取没有再类及对象中定义的属性
>> getattr #调用了__getattr__
print myluck[3] #获取分片值
>> getitem #调用了__getitem__
for key in myluck:
print key
>>it_goodday #调用了__iter__
>>it_goodnight