好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

深入了解Python中的魔术方法

__format__(self, formatstr) 
"Hello, {0:abc}".format(a) 

等价于

format(a, "abc") 

, 等价于

a.__format__("abc") 


这在需要格式化展示对象的时候非常有用,比如格式化时间对象。

__hash__(self) 

对实例使用

hash() 

时调用, 返回值是数值类型。

__nonzero__(self) 

对实例使用

bool() 

时调用, 返回True或者False。
你可能会问, 为什么不是命名为

__bool__ 

? 我也不知道。
我只知道该方法在Python3中改名为

__bool__ 

了。

__dir__(self) 

对实例使用

dir() 

时调用。通常实现该方法是没必要的。

__sizeof__(self) 

对实例使用

sys.getsizeof() 

时调用。返回对象的大小,单位是bytes。

__instancecheck__(self, instance) 

对实例调用

isinstance(instance, class) 

时调用。 返回值是布尔值。它会判断instance是否是该类的实例。

__subclasscheck__(self, subclass) 

对实例使用

issubclass(subclass, class) 

时调用。返回值是布尔值。它会判断subclass否是该类的子类。

__copy__(self) 

对实例使用

copy.copy() 

时调用。返回”浅复制”的对象。

__deepcopy__(self, memodict={}) 

对实例使用

copy.deepcopy() 

时调用。返回”深复制”的对象。

__call__(self, [args...]) 

该方法允许类的实例跟函数一样表现:
class XClass:
def __call__(self, a, b):
return a + b
def add(a, b):
return a + b
x = XClass()
print 'x(1, 2)', x(1, 2)
print 'callable(x)', callable(x) # True
print 'add(1, 2)', add(1, 2)
print 'callable(add)', callable(add) # True

Python3中的差异

Python3中,str与unicode的区别被废除了,因而

__unicode__ 

没有了,取而代之地出现了

__bytes__ 

.
Python3中,pision默认就是true pision, 因而

__p__ 

废弃.

__coerce__ 

因存在冗余而废弃.

__cmp__ 

因存在冗余而废弃.

__nonzero__ 

改名为

__bool__ 

查看更多关于深入了解Python中的魔术方法的详细内容...

  阅读:36次