展示类的内容
使用字符串来表示类是一个相当有用的特性。
在Python中有一些内建方法可以返回类的表示,相对应的,也有一系列魔法方法可以用来自定义在使用这些内建函数时类的行为。
1. __str__(self)
定义在对类的对象调用str(obj)
的时候的返回值.
2. __repr__(self)
定义对类的实例调用 repr()
时的行为。 str()
和 repr()
最主要的差别在于“目标用户”。 repr()
的作用是产生机器可读的输出(大部分情况下,其输出可以作为有效的Python代码),而 str()
则产生人类可读的输出。
参考文章:str 和 repr 的区别
3. __format__(self)
定义当类的实例用于新式字符串格式化时的行为,例如, “Hello, 0:abc!”.format(a)
会导致调用 a.__format__(“abc”)
。当定义你自己的数值类型或字符串类型时,你可能想提供某些特殊的格式化选项,这种情况下这个魔法方法会非常有用。
4. __hash__(self)
定义对类的实例调用 hash()
时的行为。它必须返回一个整数,其结果会被用于字典中键的快速比较。同时注意一点,实现这个魔法方法通常也需要实现 __eq__
,并且遵守如下的规则: a == b
意味着 hash(a) == hash(b)
。
5, __bool__(self)
定义对类的实例调用 bool()
时的行为,根据你自己对类的设计,针对不同的实例,这个魔法方法应该相应地返回True
或False
。
6. __dir__(self)
定义对类的实例调用 dir()
时的行为,这个方法应该向调用者返回一个属性列表。一般来说,没必要自己实现 __dir__
。但是如果你重定义了 __getattr__
或者 __getattribute__
(下个部分会介绍),乃至使用动态生成的属性,以实现类的交互式使用,那么这个魔法方法是必不可少的。