天津建设工程注册中心网站个人备案网站服务内容

张小明 2025/12/29 22:03:49
天津建设工程注册中心网站,个人备案网站服务内容,王也踏青图是哪一集,鹤壁seo类的类自定义元类基础 创建一个自定义元类#xff0c;通常需要继承 type并重写其 __new__或 __init__方法。 class VerboseMeta(type):一个在创建类时打印信息的元类示例def __new__(cls, name, bases, attrs):# 在类对象真正创建之前通常需要继承 type并重写其 __new__或 __init__方法。classVerboseMeta(type):一个在创建类时打印信息的元类示例def__new__(cls,name,bases,attrs):# 在类对象真正创建之前我们可以修改属性字典 (attrs)print(f[VerboseMeta] 正在创建类{name})# 例如我们可以自动给类添加一个由元类注入的属性attrs[injected_by_meta]f由元类为{name}注入# 必须调用父类的__new__方法来最终完成类的创建returnsuper().__new__(cls,name,bases,attrs)def__init__(self,name,bases,attrs):# 类对象已经创建可以进行一些初始化后的操作print(f[VerboseMeta] 类{name}初始化完成)super().__init__(name,bases,attrs)classMyClass(metaclassVerboseMeta):defhello(self):returnHello from MyClass# 当Python解释器执行到上面的类定义时VerboseMeta就已经开始工作了。# 输出# [VerboseMeta] 正在创建类MyClass# [VerboseMeta] 类 MyClass 初始化完成objMyClass()print(obj.hello())# 输出: Hello from MyClassprint(obj.injected_by_meta)# 输出: 由元类为MyClass注入VerboseMeta的 __new__方法在类 MyClass被创建前被调用参数 name是类名‘MyClass’bases是基类元组默认为空attrs是一个包含类体内定义的所有属性如方法、类变量的字典。我们通过修改 attrs动态地为类添加了一个新属性 injected_by_meta场景一自动注册特定方法假设我们想自classRegisterMeta(type):def__new__(cls,name,bases,attrs):# 遍历类的属性找出所有可调用且名字以大写字母开头的方法methods[keyforkey,valueinattrs.items()ifcallable(value)andkey[0].isupper()]# 将这些方法名列表存入类的 registered_methods 属性中attrs[registered_methods]methodsreturnsuper().__new__(cls,name,bases,attrs)classMyService(metaclassRegisterMeta):defPublicMethod(self):# 以大写字母开头将被注册returnThis is a public method.defprivate_method(self):# 以小写字母开头不会被注册returnThis is a private method.print(MyService.registered_methods)# 输出[PublicMethod]元类 RegisterMeta在 MyService类创建时扫描其属性将符合条件的方名法记录到 registered_methods列表中这对于构建插件系统或API框架非常有用场景二实现单例模式classSingletonMeta(type):_instances{}# 用于存储每个类的唯一实例def__call__(cls,*args,**kwargs):# 当类被“调用”实例化时此方法被触发ifclsnotincls._instances:# 如果该类还没有实例则创建一个并存入字典instancesuper().__call__(*args,**kwargs)cls._instances[cls]instance# 返回字典中存储的该类的实例returncls._instances[cls]classDatabaseConnection(metaclassSingletonMeta):def__init__(self):print(初始化数据库连接...)# 模拟耗时的连接建立# 测试db1DatabaseConnection()# 输出初始化数据库连接...db2DatabaseConnection()print(db1isdb2)# 输出True, 说明是同一个对象关键在于元类的 __call__方法控制着类的实例化过程。通过检查实例是否已存在我们确保了全局唯一性进阶应用迷你ORM框架classField:描述字段的类def__init__(self,data_type):self.data_typedata_typeclassModelMeta(type):元类用于收集Model子类的字段信息def__new__(cls,name,bases,attrs):# 跳过对基类Model本身的处理ifnameModel:returnsuper().__new__(cls,name,bases,attrs)# 收集所有Field类型的属性fields{}forkey,valueinattrs.items():ifisinstance(value,Field):fields[key]value# 将收集到的字段信息存入类的_fields属性中attrs[_fields]fields# 假设表名就是类名的小写attrs[_table_name]name.lower()returnsuper().__new__(cls,name,bases,attrs)classModel(metaclassModelMeta):所有模型类的基类pass# 定义具体的模型类classUser(Model):idField(int)nameField(str)emailField(str)# 使用print(User._table_name)# 输出userprint(User._fields)# 输出{id: __main__.Field object at ..., ...}userUser()# 此时user实例的类User已经通过ModelMeta元类自动拥有了关于其字段和表名的元信息。这个例子展示了元类的强大之处它允许框架开发者Model和ModelMeta在后台完成繁琐的映射工作而业务开发者User类的定义者只需以非常声明式的方式编写代码就能实现复杂的功能。这正是Django ORM等框架的核心工作原理。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

住房和城乡建设部网站 挂证通报app网站维护

导语 【免费下载链接】DeepSeek-R1 探索新一代推理模型,DeepSeek-R1系列以大规模强化学习为基础,实现自主推理,表现卓越,推理行为强大且独特。开源共享,助力研究社区深入探索LLM推理能力,推动行业发展。【此…

张小明 2025/12/27 15:16:14 网站建设

安阳企业建网站html怎么做

文章介绍了大模型技术中的三大核心概念:RAG、知识库和Embedding。当前大模型缺乏特定领域知识,可通过添加知识库解决。Embedding将各类信息转换为向量语言,便于高效检索。RAG(检索、增强、生成)流程让大模型基于外部知识回答问题,…

张小明 2025/12/28 6:20:45 网站建设

宝安专业网站设计多少钱抗疫物资捐赠网

迁移到 Linux 上的 SQL Server:工具与方法指南 在将数据库迁移到 Linux 上的 SQL Server 时,评估实例或数据库的静态配置细节有助于使迁移过程更加顺利。不过,大多数用户在迁移到新版本的 SQL Server(如 Linux 上的 SQL Server 2017)时,也会关注查询性能。以下介绍两款实…

张小明 2025/12/28 1:24:41 网站建设

网站的查询系统怎么做primefaces做网站

终极指南:5分钟掌握Flowchart-Vue可视化流程图开发 【免费下载链接】flowchart-vue Flowchart & designer component for Vue.js. 项目地址: https://gitcode.com/gh_mirrors/fl/flowchart-vue 你是否曾经为了在项目中实现一个简单的流程图而熬夜写SVG代…

张小明 2025/12/27 22:42:43 网站建设

北京网站制作排名株洲seo优化排名

商汤科技「产品发布周」第三天,我们来谈谈商业世界最沸腾的赛道——电商直播。这个看似最需要人的赛道,其实更需要AI来赋能。近年来,直播电商迈入发展快车道。预计2025年,中国直播电商市场规模将突破6万亿。直播电商爆发增长的背后…

张小明 2025/12/28 18:37:04 网站建设