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