测开日常笔记之装饰器

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))

原文地址:https://www.cnblogs.com/666666pingzi/p/10897466.html