python 小知识 - 内置方法和属性应用:反射和单例
1. 前言
python 除了丰富的第三方库外,本身也提供了一些内在的方法和底层的一些属性,大家比较常用的如 dict、list、set、min、max、range、sorted 等。笔者最近在做项目框架时涉及到一些不是很常用的方法和属性,在本文中和大家做下分享。
2. 内置方法和函数介绍
enumerate
如果你需要遍历可迭代的对象,有需要获取它的序号,可以用
enumerate
, 每一个 next 返回的是一个 tuple
zipzip 从参数中的多个迭代器取元素组合成一个新的迭代器;
globals(): 一个描述当前执行过程中全局符号表的字典,可以看出你执行的所有过程
id(object): python 对象的唯一标识
staticmethod 类静态函数注解
类的属性我们来看下一个类的申明,如下:
3. 单例模式应用
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。单例模式要求在类的使用过程中只实例化一次,所有对象都共享一个实例。创建的方法是在实例的时候判断下是否已经实例过了,有则返回实例化过的全局实例。python 是如何实现的呢?关键是找到实例化的地方,对就是前面说的__new__
4. 反射应用
反射在许多框架中都有使用到,简单就是通过类的名称(字符串)来实例化类。一个典型的场景就是通过配置的方式来动态控制类的执行,比如定时任务的执行,通过维护每个定时任务类的执行时间,在执行时间到的时候,通过反射方式实例化类,执行任务,在 java 中也非常的常见。
python 的实现可以通过上面说的getattr
获取模块中的类, 通过 methodcaller 来调用方法。我们来看一个简单的例子
5. 总结
本文通过分享了 python 内置方法和属性, 并在单例模式和反射中进行应用。希望对你有帮助,欢迎交流 @mintel 要点总结如下:
dir 下类
查看类自定义属性__dict__
__new__实例化类,__init__初始化类
getattr 获取属性
setattr 设置属性
记住 importlib 和 methodcaller
版权声明: 本文为 InfoQ 作者【AIWeker】的原创文章。
原文链接:【http://xie.infoq.cn/article/116da86868fbcf31772d11888】。文章转载请联系作者。
评论