zoukankan      html  css  js  c++  java
  • 测开日常笔记之装饰器

    1.用类来实现装饰器

      1.__init__ 方法发的作用?
      在创建对象的时候,自动调用,对创建的对象进行初始化设置
      2.社么是魔术方法

      双下划线开头的就是魔术方法 哈哈


    3.创建一个对象调用的第一个方法是啥?
      new 方法 作用:创建并返回一个对象,但是不建议重写new 方法

      注意:我们创建类的时候首先会自动调用new 方法创建一个对象
      然后使用__init__方法对对象进行初始化

    2.多个装饰器装饰同一个函数

      多个装饰器装饰同一个函数的话,从下往上装饰,从上往下执行

    3.Python中 类里面三个内置的装饰器

      注意: 这三个内置的装饰器 只能在类里面使用

      @classmethod # 被classmethod 装饰了之后就是一个类方法

      1. cls : 代表的是类本身
      2. self : 代表的是实例本身
      3. 被classmethod 装饰的类方法,可以通过 类名.方法名 直接调用

      @staticmethod 装饰静态方法的内置装饰器

      1.实例跟类都可以调用
      2.静态类不需要传 self 跟 cls 参数

      @property 装饰完了之后,该方法可以像属性一样被调用 (一般就是用来设定只读属性,只能读不能更改 )


    4.单例模式

      就是类只能实例化一次,如果该类之前没有创建过对象,则创建返回,如果创建了。
      就不重新创建,还是第一次创建的对象

      实现思路:
      1.定义一个类属性,来记录该类是否创建过对象
      2.在__new__方法中对类属性做判断
      2.1 没有创建过对象,那就创建一个,并且修改类属性的值
      2.2 创建过了,就将之前创建的返回出去

      例子:

      单例模式
      class MyTest(object):
      instance = None

      def __new__(cls, *args, **kwargs):
      if not cls.instance:
      cls.instance = object.__new__(cls)
      return cls.instance
      else:
      return cls.instance

      t = MyTest()
      t.name = "木僧"
      print(id(t.name))
      t2 = MyTest()
      print(id(t2.name))

  • 相关阅读:
    httpVueLoader.js props传递参数
    iview自定义图标,render方式自定义图标
    C# MVC API WebSocket的聊天室案例
    CSS/HTML实现Switch开关按钮
    AndroidStudio打包Jar包给Unity使用的期间遇到的错误
    AndroidStudio4.0.1 打包 Jar包
    解决SVN异常 cleanup failed
    c++ sizeof的实现
    c++ 函数指针简单实例
    C++ socket 网络编程 简单聊天室
  • 原文地址:https://www.cnblogs.com/666666pingzi/p/10897466.html
Copyright © 2011-2022 走看看