目录
1.__call__(self[,srgs...])
在对象中既可以有属性又可以有方法,python可以像调用函数一样去调用一个对象,要求就是需要这个对象的类去定义一个叫做__call__的魔法方法。__call__()支持位置参数和关键字参数(一个*代表位置参数,两个*代表关键字参数)
2.与字符串相关的魔法方法
__str__(self):响应str内置函数
__repr__(self):对应的内置函数是repr()
以上两个魔法方法必须是返回字符串的类型,其次repr这个魔法方法是可以对str魔法方法进行代偿的。也就是说如果我们只定义了repr方法,那么调用str函数也是可以被响应到的,但是反过来就不行
str魔法方法定义的只能应用于打印操作的顶层,也就是说如果我们把多个对象放到一个列表中,然后把这个列表打印出来的话,那么我们就没办法访问这个对应的字符串
str函数是将参数转换为字符串对象,是给人看的
repr函数是将对象转换为程序可执行的字符串,是给程序看的
eval()函数:将参数去引号后执行
3.property()函数
class property(fget=none,fset=none,fdel=none,doc=none)
(1)property()函数用于返回一个property属性对象
(2)优点:
- 简化类似遮遮掩掩的操作
- 传入函数作为参数
如果我们将property函数作为装饰器来使用 ,会让创建只读属性的工作变得极为简单
装饰器其实就是语法糖,将它转化成容易理解的样子
因为我们这里只赋值了property的第一个参数,也就是用于实现获取的fget 参数,另外两个参数都采用默认值none,表示不支持写入和删除,所以才会出现只读属性
4. 类方法
通常定义在类里面的方法,类自己是没有办法直接调用的,需要通过实例对象操作,究其根本,是因为方法需要对象来绑定。
(1)类方法:专门用于绑定类的方法
想要实现类方法,可以使用@classmethod这个装饰器来实现
(2)类方法的特点
- 绑定的是类,而非实例对象
- 有时候对象变多,就可能需要程序能够统计一下这个对象的数量,或者说通过创建一个列表来维护一个类对应的所有对象,对于这类的需求,可以通过类方法实现
5.静态方法
静态方法说白了就是放在类里面的函数,他与普通函数的区别是:他可以放到类里面
我们说在类里面的函数叫方法,是因为方法需要跟对象进行绑定,但是函数却没有绑定的操作,那么这个静态方法就是让你做到在类里面定义一个不需要绑定的函数
我们要创建一个静态函数使用的装饰器是@staticmethod