当前位置: 首页 > wzjs >正文

运城做网站公司百度手机版网址

运城做网站公司,百度手机版网址,网站项目推广方案,滨海企业做网站多少钱知识点回顾 类的装饰器装饰器思想的进一步理解:外部修改、动态类方法的定义:内部定义和外部定义 作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解等&…

知识点回顾

  1. 类的装饰器
  2. 装饰器思想的进一步理解:外部修改、动态
  3. 类方法的定义:内部定义和外部定义

作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解等,未来再过几个专题部分我们即将开启深度学习部分。

一、单例模式装饰器

目标:确保一个类只能创建一个实例。

def singleton(cls):instances = {}  # 用字典存储类的唯一实例def wrapper(*args, ​**kwargs):if cls not in instances:  # 如果实例不存在,则创建instances[cls] = cls(*args, ​**kwargs)return instances[cls]  # 返回已有实例return wrapper# 使用示例
@singleton
class DatabaseConnection:def __init__(self, host):self.host = host# 测试
conn1 = DatabaseConnection("localhost:3306")
conn2 = DatabaseConnection("another_host")  # 不会生效,仍返回 conn1 的实例
print(conn1 is conn2)  # 输出 True
原理说明:
  1. singleton 是一个类装饰器,它通过闭包维护一个字典 instances
  2. 当类第一次被实例化时,会创建实例并存入字典;后续请求直接返回已有实例。
  3. 无论传递多少参数,后续实例化都会忽略参数并返回第一个实例(需注意参数一致性)
  4. 二、方法调用日志装饰器

    目标:自动记录类的初始化和方法调用。

    def log_class(cls):# 包装 __init__ 方法original_init = cls.__init__def __init__(self, *args, ​**kwargs):print(f"[LOG] 初始化 {cls.__name__},参数: args={args}, kwargs={kwargs}")original_init(self, *args, ​**kwargs)cls.__init__ = __init__# 包装所有其他方法for name, method in cls.__dict__.items():if callable(method) and name != "__init__":def make_logged_method(m):def logged_method(self, *args, ​**kwargs):print(f"[LOG] 调用方法 {cls.__name__}.{m.__name__}")return m(self, *args, ​**kwargs)return logged_methodsetattr(cls, name, make_logged_method(method))return cls# 使用示例
    @log_class
    class Calculator:def __init__(self, precision=2):self.precision = precisiondef add(self, a, b):return a + bdef multiply(self, a, b):return a * b# 测试
    calc = Calculator(precision=3)
    calc.add(2, 3)
    calc.multiply(4, 5)

    三、进阶:带参数的类装饰器

    如果需要动态配置装饰器行为(如是否启用日志),可以添加参数:

    def conditional_log(enable=True):def decorator(cls):original_init = cls.__init__def __init__(self, *args, ​**kwargs):if enable:print(f"[LOG] 初始化 {cls.__name__}")original_init(self, *args, ​**kwargs)cls.__init__ = __init__return clsreturn decorator# 使用示例
    @conditional_log(enable=False)  # 关闭日志
    class SilentClass:pass

http://www.dtcms.com/wzjs/94423.html

相关文章:

  • 学做立体书的网站百度小程序怎么进入
  • 做网站程序网站优化推广费用
  • 网站建设文翻译工作网站模板及源码
  • 长沙网站建设长沙建设银行23岁老牌网站
  • tor网站建设网站优化公司怎么选
  • 个人网站建设的参考文献无锡百度
  • 做电影网站要几G空间的网络营销课程培训机构
  • 漳州做网站含博大网销售网络平台
  • c语言如何做网站百度seo推广是什么
  • 公司名称大全20000个免费的seo优化工具
  • 户网站建设的不全.市场营销专业
  • wordpress单位内网做网站免费网站创建
  • 仙踪林老狼网站欢迎您拍照站内免费推广有哪些
  • 专业做农牧应聘的网站网络推广运营优化
  • 拖拽做网站互联网营销师题库
  • 国家重大建设项目库网站南京谷歌推广
  • 购物网站的后台seo中国
  • pc网站手机版开发营销软文怎么写
  • 看会员视频的网站开发网上兼职外宣推广怎么做
  • 网站类型分类有哪些关键词挖掘方法
  • 怎么开发网站平台潍坊百度seo公司
  • 网页制作和网站开发实验报告平台推广方式方法是什么
  • 做网站公司怎么拉客户站长之家域名查询
  • 网站建设方案行业百度快照是怎么做上去的
  • 免费做团购网站的软件好seo外链工具源码
  • 网站接入商排名电脑培训学校网站
  • 做商业网站需要注册公司吗推广策划方案范文
  • 企业网店推广运营策略搜索引擎优化 简历
  • 湖南网站营销优化靠谱独立站建站平台有哪些
  • 网站建设营销网页在线代理翻墙