__str__
方法用于str()函数转换中,默认使用print()方法打印一个对象时,就是对它的调用,我们可以重写这个函数还实现自定义类向字符串的转换
repr()函数调用对象中的__repr__()
方法,返回一个Python表达式,通常可以在eval()中运行它
Python在object基类中提供了3个与属性操作相关的方法:
__delattr__
:用于del语句,删除类或者对象的某个属性__setattr__
:用于动态绑定属性__getattribute__
:在获取类属性时调用,无论属性是否存在Python提供了三个内置属性方法getattr()、setattr()和hasattr(),分别用于获取、设置和判定对象的属性
既然我们已经可以通过对象名直接访问它们,为何还要使用这些函数呢?通过它们我们可以对任意一个我们不熟悉的对象进行尝试性访问,而不会导致程序出错
getattr()方法最大的用途在于如果对象没有相应属性,可以不报错AttributeError,可以为它指定一个默认值
类的构造方法
控制创建类的实例
__call__
具有非常特殊的功能,可以将一个对象名函数化。实现了__call__()
函数的类,其实例就是可调用的(Callable)。可以像使用一个函数一样调用它
装饰器类就是基于__call__()
方法来实现的。__call__()
只能通过位置参数来传递可变参数,不支持关键字参数,除非函数明确定义形参
可以使用callable()方法来判断一个对象是否可被调用,也即对象能否使用()括号的方法调用
参考文档:https://pythonhowto.readthedocs.io/zh-cn/latest/object.html#id15
包含算术运算、比较运算、赋值运算、位运算、逻辑运算、成员运算、身份运算、其他
参考文档:https://pythonhowto.readthedocs.io/zh-cn/latest/object.html#id19