| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- # -*- coding: UTF-8 -*-
- """
- #
- 自省
- #
- In computing, type introspection is the ability of a program to examine the type or
- properties of an object at runtime. Some programming languages possess this capability.
- 在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型(以及属性等)的一种能力,通常也可以称作运行时类型检查。
- 方法 作用 类型
- help() 查看函数或者模块用途的详细说明 自省
- dir() 返回对象所有属性 自省
- type() 查看对象类型 自省
- isinstance() 判断一个对象是否是一个已知的类型 自省
- issubclass() 判断一个类是不是另一个类的子类 自省
- id() 返回地址值 自省
- callable() 判断对象是否可调用 自省
- """
- """
- #
- 反射
- #
- Introspection should not be confused with reflection, which goes a step further and is the
- ability for a program to manipulate the values, meta-data, properties and/or functions of an object at runtime.
- 也就是说自省和反射不是同一回事,自省是获取对象类型的能力,而反射是操纵对象的值,元数据,属性和/或函数的能力。
- 在计算机学中,反射(英语:reflection)是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。
- 用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。
- 在Python中反射非常简单,用起来几乎感觉不到与其他的代码有区别,使用反射获取到的函数和方法可以像平常一样加上括号直接调用,
- 获取到类后可以直接构造实例;不过获取到的字段不能直接赋值,因为拿到的其实是另一个指向同一个地方的引用,赋值只能改变当前的这个引用而已。
- 方法 作用 类型
- hasattr() 判断类方法或者类属性是否存在,返回一个布尔值,存在返回True,反之返回Flase 反射
- getattr() 获取属性值或实例方法,如果其不存在,会抛出一个AttributeError异常 反射
- setattr() 设置实例属性的值,如果实例属性不存在时,会自动给当前实例添加该属性 反射
- delattr() 删除实例的属性或者实例的方法,当其不存在时同样会抛出一个AttributeError异常 反射
- """
|