Python 类可以定义的专用方法。专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样)。
6.5.1 __init__
类似于构造函数。
6.5.2 __del__
类似于析构函数
6.5.3 __repr__
使用repr(obj)的时候,会自动调用__repr__函数,该函数返回和eval()兼容的对象字符串表达式,用于重建对象,如果eval(repr(obj))会得到一个对象的拷贝。
class A: def __repr__(self): return 'A()' x = A() print repr(x) b = eval(repr(x)) # 拷贝对象a print b
6.5.4 __str__
返回一个字符串用于描述字符串本身。
6.5.5 __cmp __
比较运算符,0:等于 1:大于 -1:小于
class Dog: def __cmp__(self, other): if other > 0 : return 1 elif other < 0: return - 1 else: return 0 dog = Dog() if dog > -10:print 'ok' if dog < -10:print 'ok' if dog == 0:print 'ok'
class Zoo: def __getitem__(self, key): if key == 'dog':return 'dog' elif key == 'pig':return 'pig' elif key == 'wolf':return 'wolf' else:return 'unknown' zoo = Zoo() print zoo['dog'] print zoo['pig'] print zoo['wolf']
输出结果:ok ok
6.5.6 __getitem__
__getitem__ 专用方法很简单。象普通的方法 clear,keys 和 values 一样,它只是重定向到字典,返回字典的值。
输出结果:dog pig wolf
6.5.7 __setitem__
__setitem__ 简单地重定向到真正的字典 self.data ,让它来进行工作。 class Zoo: def __setitem__(self, key, value): print 'key=%s,value=%s' % (key, value) zoo = Zoo() zoo['a'] = 'a' zoo['b'] = 'b' zoo['c'] = 'c'
输出结果:dog pig wolf
key=a,value=a
key=b,value=b
key=c,value=c
6.5.8 __delitem__
class A: def __delitem__(self, key): print 'delete item:%s' % key a = A() del a['key']