您的位置:首页 > 编程语言 > Python开发

python的内置方法

2016-04-29 17:55 686 查看
最近需要重新定义类,老是会忘记python内置方法的的作用和名称,mark一下加深一下记忆。

基本上python的常见内置方法如下面所示:

 内置方法                      说明 

__init__(self,...) 
        初始化对象,在创建新对象时调用 

__del__(self) 
             释放对象,在对象被删除之前调用 

__new__(cls,*args,**kwd) 
  实例的生成操作 

__str__(self) 
             在使用print语句时被调用 

__getitem__(self,key) 
     获取序列的索引key对应的值,等价于seq[key] 

__len__(self) 
             在调用内联函数len()时被调用 

__cmp__(stc,dst) 
          比较两个对象src和dst 

__getattr__(s,name) 
       获取属性的值,等价于点调用(例如a.(...)假如重定义一个字典类,则a[b]等价于a.b)) 

__setattr__(s,name,value) 
 设置属性的值,等价于点设置(a[b]=1,a.b=1)

__delattr__(s,name) 
       删除name属性 

__getattribute__() 
        __getattribute__()功能与__getattr__()类似 

__gt__(self,other) 
        判断self对象是否大于other对象 

__lt__(slef,other) 
        判断self对象是否小于other对象 __ge__(slef,other) 判断self对象是否大于或者等于other对象 __le__(slef,other) 判断self对象是否小于或者等于other对象 __eq__(slef,other) 判断self对象是否等于other对象 __call__(self,*args) 把实例对象作为函数调用

下面po一下我重定义字典的代码
class Dict(dict):
'''
Simple dict but support access as x.y style.
'''
#初始化已实例化后的所有父类对象,方便后续使用或扩展父类中的行为:
def __init__(self, names=(), values=(), **kw):
super(Dict, self).__init__(**kw)
#zip([seql, ...])接受一系列可迭代对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。
# 若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。
for k, v in zip(names, values):
self[k] = v
#属性动态化处理;当使用点号获取类实例属性时,如果属性不存在就自动调用__getattr__方法。
def __getattr__(self, key):     #此处为:提取字典内,指定key值的value,没找到则抛出异常。
try:
return self[key]
except KeyError:
raise AttributeError(r"'Dict' object has no attribute '%s'" % key)

#属性赋值;当设置类实例属性时自动调用。
def __setattr__(self, key, value):      #此处为:设置字典对值。
self[key] = value
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: