new 、单例模式、装饰器
·
一、什么是new
用于创建实例对象前调用, 我们不需要直接使用new方法
new 方法作为一个了解就行
# new 方法作为一个了解就行
class Demo():
# new 初始化之前就会调用 在你需要进行数据处理 你就可以 在这里写一些逻辑
def __new__(cls,age):
if age < 18:
return print('你当前的值 小于 18')
haha = Demo(10)
二,单例模式
是一个赏见设计模式,用于确保一个类 只有一个实例
普通模式
# 创建一个实例
class Demo():
# 如果说类里面不想写内容的话 pass占位 pass是一个空语句 他不会作任何事情
# 如果说想写一个空类 就可以用这个pass 占位
pass
# 实例化类
实例化类1 = Demo()
实例化类2 = Demo()
实例化类3 = Demo()
# 我们可以通过id 来查看 每个实例化类的 内存地址
print(id(实例化类1))
print(id(实例化类2))
print(id(实例化类3))
# id地址不一样
1397769271040
1397769269696
1397770282176
# 这就是正常的创建一个类 每个类的内存地址不一样 每次都会换
单例模式
# 单例模式
class Demo():
# 如果说类里面不想写内容的话 pass占位 pass是一个空语句 他不会作任何事情
# 如果说想写一个空类 就可以用这个pass 占位
pass
# 实例化类
实例化类1 = Demo() # 开辟了一个内存
实例化类2 = 实例化类1 # 将我们实例化类2 存到实例化1的内存地址中去
实例化类3 = 实例化类1 # 将我们实例化类3 存到实例化1的内存地址中去
print(id(实例化类1))
print(id(实例化类2))
print(id(实例化类3))
# 这样就叫单列模式
三、私有属性
类中的私有
在名字前加上一个__就是私有 如果是属性加上了就是私有属性 如果是方法加上了就是私有方法
私有方法和公有方法区别
私有方法和私有属性只能在类的内部被访问
公有方法 可以在全局被访问
私有属性
class Demo():
# 初始化的方法
def __init__(self,name,age):
# 公有
self.name = name
# 只要属性名前 加__ 就是一个私有属性 私有属性值 age
self.__age = age
# 公有的方法
def func(self):
# 私有属性 只能在类里面使用
print('这是一个公有的方法',self.__age)
self.func2()
# 私有方法
# 如何来判断私有方法 加__ 就是一个私有方法
def func2(self):
print('123123')
# 实例化
人 = Demo('飞鸿',18)
人.func()
第二个人 = Demo('刘德华',18)
私有方法和私有属性的区别是什么? 一个是函数 一个是变量 他们和公有方法和公有属性的一个区别是什么? 私有:只能在 类的内部使用 公有: 就是在任何地方都能使用
四、 装饰器
作用:避免代码重复编写,简化流程 ,职责分离 ,增强代码可读性
注意事项:
1,在闭包内 必须要传入一个形参
2,这个形参 就是所有函数 调用形参时就是在调用所有函数
def func(a):
def func1():
# 调用函数
# a = 所有装饰器的函数 进行一个调用
a()
什么是闭包?
这就是闭包
def func():
def func1():
print('我是闭包')
return func1()
# 闭包调用
func()()
1,我们想使用装饰器 首先的定义一个闭包
2,函数名前 加@闭包名 是装饰器 也可以称为帽子
# 我们将闭包放过来
def func(a):
def func1():
# 调用函数
# a = 所有装饰器的函数 进行一个调用
a()
print('我爱你')
print('我很你')
print('我想你')
print('你太坏了')
print('为了给你们演示装饰器的好处 累死老师我了')
print('# 在打印一句话 ')
print('_________________________________________________')
return func1
# 在函数名的前面 加@和闭包名
# 这个就叫装饰器
# 作用:简洁方便 代码复用 批量处理 职责分离
# 我们想使用装饰器 首先的定义一个闭包
# 闭包返回: 重复的代码 职责分这就是闭包
def func():
def func1():
print('我是闭包')
return func1()
# 闭包调用
func()()离
# 函数名前 加@闭包名 是装饰器 也可以称为帽子
# 闭包名 必须有行参 形参名随便定义
# 这个形参名 就是函数
@func
def A():
print('我是函数A')
A()
@func
def B():
print('我是函数B')
B()
@func
def C():
print('我是函数C')
C()
@func
def D():
print('我是函数D')
D()
@func
def E():
print('我是函数E')
E()
@func
def F():
print('我是函数F')
F()
更多推荐


所有评论(0)