多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## Python自省 **运行时能够获知对象的类型。** 自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型.简单一句就是运行时能够获得对象的类型.比如type(),dir(),getattr(),hasattr(),isinstance(). ~~~python a = [1,2,3] b = {'a':1,'b':2,'c':3} c = True print type(a),type(b),type(c) # <type 'list'> <type 'dict'> <type 'bool'> print isinstance(a,list) # True ~~~ ``` help() 查看函数或模块用途的详细说明 dir() 返回对象所有属性 type() 查看对象类型 hasattr() 查看对象是否有特定属性 getattr() 得到对象的特定属性 setattr() 设置对象的特定属性 isinstance() 判断一个对象是否是一个已知的类型 issubclass() 判断一个类是不是另一个类的子类 id() 返回地址值 callable() 判断对象是否可调用 ``` ## is 和 == 的区别? **答:**讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。 ![](https://img.kancloud.cn/e1/8e/e18e23f76c699de74ffd0e79e98ae8dd_317x67.png) ![](https://img.kancloud.cn/8e/96/8e964c37beb8e38d455ee6ffc44b29d2_307x52.png) - is 比较的是两个对象的id值是否相等, 也就是比较两个对象是否为同一个实例对象,是否指向同一个内存地址。 - `==` 比较的是两个对象的内容是否相等, 默认会调用对象的 `__eq__ `方法,`==` 是python标准操作符中的比较操作符,用来比较判断两个对象的值是否相等。 ## **Python中的反射** 在反射机制就是在运行时,动态的确定对象的类型,并可以通过字符串调用对象属性、方法、导入模块,是一种基于字符串的事件驱动。 通过字符串的形式,去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员。 Python是一门解释型语言,因此对于反射机制支持很好。在Python中支持反射机制的函数有getattr()、setattr()、delattr()、exec()、eval()、\_\_import\_\_,这些函数都可以执行字符串。