1、语言特性
1. python是动态强类型的语言
动态还是静态指的是编译器还是运行期确定类型。
强类型指的是不会发生隐式类型转换。比如js能够执行1+"1",但是python不行,所以python是弱类型的语言。
2. 鸭子类型
当一只鸟走起来像鸭子、游泳起来像鸭子、叫气力啊也像鸭子,那么这只鸟就可以被称为鸭子。
鸭子类型关注的是对象的行为,而不是类型。比如file,StringIO,socket对象都支持read/write方法,再比如定义了__iter__魔术方法的对象可以用for迭代。
3. monkey patch
所谓的monkey patch就是运行时替换。
4. 自省
运行时判断一个对象类型的能力。
python一切皆对象,用type, id, isinstance获取对象类型信息。
自省,也可以说是反射,自省在计算机编程中通常指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什么。
与其相关的主要方法:
- hasattr(object, name)检查对象是否具体 name 属性。返回 bool;
- getattr(object, name, default)获取对象的name属性;
- setattr(object, name, default)给对象设置name属性;
- delattr(object, name)给对象删除name属性;
- dir([object])获取对象大部分的属性;
- isinstance(name, object)检查name是不是object对象