自省与反射的概念.py 2.4 KB

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