流畅的python笔记

python数据模型

首先明确一点,特殊方法的存在是为了被 Python 解释器调用的,你自己并不需要调用它 们。也就是说没有 my_object.__len__() 这种写法,而应该使用len(my_object)

__repr____str__ 的区别在于,后者是在 str() 函数被使用,或是在用 print 函数 打印一个对象的时候才被调用的,并且它返回的字符串对终端用户更友好。 如果你只想实现这两个特殊方法中的一个,__repr__是更好的选择,因为如果一个对象 没有 __str__函数,而 Python 又需要调用它的时候,解释器会用 __repr__作为替代。