美文网首页
面向对象(六)

面向对象(六)

作者: qianranow | 来源:发表于2018-05-15 13:18 被阅读45次

    0. 元类


    • 概念:用来 创建 类对象
      num = 10
      print(num.__class__)
      print(num.__class__.__class__)
      s = "abc"
      print(s.__class__)
      print(s.__class__.__class__)
      class Person:
          pass
      p = Person()
      print(p.__class__)
      print(p.__class__.__class__)
      
    • 创建类对象
      def play(self, ball):
          print("在打球", self, ball)
      Person = type("Person", (), {"count": 100, "play": play})
      print(Person)
      print(Person.__dict__)
      p = Person()
      print(p)
      p.play("篮球")
      
      结构图.png
    • 类对象创建流程
      1. 检测类中是否有明确 __metaclass__ 属性;
         如果有, 则通过指定元类来创建这个类对象
      2. 检测父类中是否存在 __metaclass__ 属性;
         如果有, 则通过指定元类来创建这个类对象
      3. 检测模块中是否存在 __metaclass__ 属性;
         如果有, 则通过指定元类来创建这个类对象
      4. 通过内置的 type 这个元类, 来创建这个类对象
      
      查找机制.png
    • 应用场景
      1. 拦截类的创建
      2. 修改类
      3. 返回修改之后的类
      

    1. 类描述


    • 描述方式
      1. 形式
         (1)直接在类的下方, 使用三个双引号对描述
         (2)需要注明类的作用, 以及类属性描述
         (3)方法描述和函数描述一样
      
      2. 示例
         class Person:
             """
             关于这个类的描述, 类的作用, 类构造函数, 类属性等等
             Attributes:
                 count: int 代表人的个数
             """
             count = 100
             def play(self, ball):
                 """
                 这个方法的作用效果
                 :param ball: 参数含义, 参数类型, 是否可选, 是否有默认值
                 :return: 返回结果含义, 返回结果数据类型
                 """
      
    • 生成项目文档
      1. 使用内置模块 pydoc
         (1) 查看文档描述:python3 -m pydoc 模块名称
         (2) 启动本地服务, 浏览文档: python3 -m pydoc -b
         (3) 生成指定模块 html 文档: python3 -m pydoc -w 模块名称
      
      2. 使用第三方模块
         (1) Sphinx
         (2) epydoc
         (3) doxygen
      

    相关文章

      网友评论

          本文标题:面向对象(六)

          本文链接:https://www.haomeiwen.com/subject/ofvedftx.html