__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中的魔术方法的详细内容...