Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python 用元类检查做约束

python 用元类检查做约束

作者头像
用户5760343
发布于 2019-12-12 10:00:48
发布于 2019-12-12 10:00:48
60700
代码可运行
举报
文章被收录于专栏:sktjsktj
运行总次数:0
代码可运行

下面有一个元类,它用来检测重载方法,确保它的调用参数跟父类中原始方法有着相同的参数签名

from inspect import signature import logging

class MatchSignaturesMeta(type):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def __init__(self, clsname, bases, clsdict):
    super().__init__(clsname, bases, clsdict)
    sup = super(self, self)
    for name, value in clsdict.items():
        if name.startswith('_') or not callable(value):
            continue
        # Get the previous definition (if any) and compare the signatures
        prev_dfn = getattr(sup,name,None)
        if prev_dfn:
            prev_sig = signature(prev_dfn)
            val_sig = signature(value)
            if prev_sig != val_sig:
                logging.warning('Signature mismatch in %s. %s != %s',
                                value.__qualname__, prev_sig, val_sig)

Example

class Root(metaclass=MatchSignaturesMeta): pass

class A(Root): def foo(self, x, y): pass

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def spam(self, x, *, z):
    pass

Class with redefined methods, but slightly different signatures

class B(A): def foo(self, a, b): pass

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def spam(self,x,z):
    pass

运行结果

WARNING:root:Signature mismatch in B.spam. (self, x, *, z) != (self, x, z) WARNING:root:Signature mismatch in B.foo. (self, x, y) != (self, a, b)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WordPress 主题和插件
在本文中,我们将研究什么是 WordPress 中的主题和插件以及一些常用的主题和插件。
海拥
2022/10/30
1.2K0
WordPress 主题和插件
如何在你的 wordpress 网站中添加搜索框
💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 💬 免费且实用的 前端刷题(面经大全)网站:👉点击跳转到网站 博主前些天发现了一个巨牛巨好用的刷题网站,忍不住分享一下给大家,👉点击跳转到网站 如果你的主题不提供在你的 WordPress 网站中包含搜索框的功能,请按照以下步骤了解如何做到这一点: 转到你的仪表板并单击 Plugins 按钮。 转到添加新插件部分并搜
海拥
2022/11/29
4.2K0
如何在你的 wordpress 网站中添加搜索框
如何在 WordPress 中创建登录页面
登陆页面: 登陆页面是为特定受众制定的具有特定目标的目标页面,可以描述为“一页一目的”。登陆页面必须有一个“号召性用语”,并牢记特定目标。成功的着陆页是具有更高转化率、更高参与度和更高质量潜在客户的页面。
海拥
2022/10/04
3.1K0
如何在 WordPress 中创建登录页面
WordPress 中的常规设置
💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💬 免费且实用的 前端刷题(面经大全)网站:👉点击跳转到网站 博主前些天发现了一个巨牛巨好用的刷题网站,忍不住分享一下给大家,👉点击跳转到网站 在本文中,我们将讨论 WordPress 常规设置。在继续 WordPress常规设置之前,我们应该知道什么是 WordPress!WordPress 是一个免费的开源内容管理系统 (CMS) 框架。它是最近使用最广泛的 CMS 框架。 Wo
海拥
2022/12/19
2K0
WordPress 中的常规设置
如何在Ubuntu 14.04上使用双因素身份验证保护您的WordPress帐户登录
安全性是运行WordPress网站最重要的方面之一。我们中的许多人都倾向于认为黑客不会打扰我们的网站,但实际上,未经授权的登录尝试是在公共互联网上运行服务器的常见部分。
彼岸轮回
2018/10/16
1.9K0
WordPress 初学者词汇表(术语解释)
WordPress.com是由 Automattic(发明 WordPress 的开发人员)运营的在线平台,您可以在其中免费创建基本博客(尽管您可以注册高级计划)。WordPress.com 的问题在于,您的网站在技术上由 Automattic 拥有和管理,而在网站的功能和设计方面,您的选择有限。
帝旭科技
2022/11/23
7.5K0
WordPress 初学者词汇表(术语解释)
强大的WordPress表单插件 Forminator : 用API定制开发你的第一个插件
从表面上, Forminator似乎只是一个不起眼的Wordpress表单插件(form plugin),但如果你花点时间浏览Forminator API ,你会发现它不仅外表时髦,内心也很狂野。
丘壑
2019/03/13
3.3K0
WordPress 数据库详解
WordPress 数据库为您的 WordPress 网站提供了基础。没有数据库,您的 WordPress 网站根本无法运行。WordPress 数据库支持您的网站加载和运行,并存储和保存您博客的内容,例如帖子和评论,以及您(甚至您的访问者)所做的更改。
白黎
2023/03/16
5.6K0
WordPress 数据库详解
8个用于设计漂亮表格的WordPress插件
在WordPress中作为内容管理工具的一个好处是,几乎所有文字处理软件能做的事情(例如文本格式,布局格式,嵌入图像等等)都可以在WordPress编辑器中完成,但比较欠缺的一种功能是表格设计。
丘壑
2019/04/09
5.1K0
8个用于设计漂亮表格的WordPress插件
如何搭建 WordPress 博客
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。它是使用PHP语言和MySQL数据库开发的。用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。WordPress有许多第三方开发的免费模板,安装方式简单易用。所以,对于初学者来说,我强烈建议使用WordPress来搭建网站。因为这是最简单易用的平台,且使用于任何开发者,用户以及自媒体作家。
Mr.Crypto
2018/10/17
7.6K2
如何搭建 WordPress 博客
如何使用 CAPTCHA 保护您的 WordPress 网站
除非您以前从未上网,否则您肯定会遇到过 CAPTCHA 测试——可能每个版本也是如此。 如果您曾经不得不在方框中输入波浪线、模糊的文本或单击网格中带有消防栓(或其他基本视觉效果)的每个图像,那么您已经通过了 CAPTCHA 测试。 这是保持 WordPress 网站安全的最基本且最有效的方法之一。 有了这么多可用的专用插件,确保您的网站安全,尤其是在黑客首先攻击的地方,比您想象的要简单。
星姮十织
2022/01/02
3.7K0
Akismet插件教程WordPress阻止过滤垃圾邮件插件
Akismet 插件是一个基于云的应用程序,可以过滤掉基于WordPress建站的网站上的垃圾邮件。该插件已获得超过 500 万次下载,本文,晓得博客为你介绍Akismet插件教程WordPress阻止过滤垃圾邮件插件。
晓得博客
2022/04/21
1.7K0
Akismet插件教程WordPress阻止过滤垃圾邮件插件
WordPress会员管理插件|AffiliateWP v2.6.8 已激活包含所有Pro插件
AffiliateWP是一个易于使用,可靠的WordPress会员营销插件,可以轻松地创建完整的会员计划,并可直接从WordPress仪表板管理会员,付款,会员推荐等。AffiliateWP插件会自动创建一个会员页面,也可以通过在页面编辑区域中插入[affiliate_area]简码来手动创建此页面。会员页面允许用户注册或加入会员计划。登录后,用户可以生成引荐网址,查看统计信息,添加付款信息以及许多其他功能。简而言之,会员页面是专为会员设计的专业仪表板。
半夜喝可乐
2024/09/30
3110
WordPress会员管理插件|AffiliateWP v2.6.8 已激活包含所有Pro插件
WordPress 版本更新
WordPress 是一个内容管理系统 (WCM),即它是一种以最佳方式组织创建、存储和展示 Web 内容的整个过程的工具。WordPress 作为一种改进工具开始了它的旅程,以增强日常写作的常规排版。但它被视为一种博客工具,当我们进入今年最后一个季度时,WordPress 成为最常用的 WCM 系统,而且不仅在博客社区中也是如此。
海拥
2023/01/01
2.7K0
WordPress 版本更新
WordPress 编辑用户
WordPress 是一个完全基于 PHP 和 MySql 的开源内容管理系统,用于创建动态网站。Matt Mullenweg 开发了 WordPress 并用 PHP 语言编写。WordPress 是最受欢迎的界面之一,它允许用户从其后端内容管理系统自定义和管理网站。它用于以最佳方式组织创建、存储和展示 Web 内容的整个过程。WordPress 最初是作为一种改进工具开发的,用于增强日常写作的常规排版。
海拥
2022/12/05
1.6K0
WordPress 编辑用户
如何备份 WordPress 数据库
WordPress 是一个完整的仓库,我们使用表格、数据库和其他变量来维护和组织我们的网站信息。因此,在网站管理过程中,强烈建议你定期或在任何升级之前备份你的文件和数据库。
海拥
2022/10/31
2.8K0
如何备份 WordPress 数据库
Edge2AI之使用 Cloudera Data Viz 创建仪表板
在本次实验中,您将创建一个简单的交互式实时仪表板,以可视化存储在 Kudu 中的传感器数据。
大数据杂货铺
2022/04/27
3.4K0
Edge2AI之使用 Cloudera Data Viz 创建仪表板
如何在Ubuntu 14.04上使用OpenLiteSpeed安装WordPress
WordPress是目前世界上最受欢迎的内容管理系统(CMS)。它允许您在数据库后端轻松设置博客和网站,使用PHP执行脚本和处理动态内容。WordPress有一个庞大的在线社区支持,能够快速启动和运行网站。
林岑影
2018/10/10
1.3K0
用Google Analytics分析WordPress
Google Analytics(分析)提供与您网站的访问者流量和销售相关的详细统计信息,让您更好地了解您的受众群体。对任何有兴趣增加访客群的网站所有者都有好处。
Techeek
2018/09/19
4.6K0
用Google Analytics分析WordPress
WordPress缓存插件WP Fastest Cache插件使用教程
WP Fastest Cache 是一个多功能缓存插件,通过创建HTML文件来帮助减少您网站的页面加载时间,由于 WordPress 网站是通过 PHP 和 MySQL数据库呈现的,因此每次从服务器请求页面时都需要使用 RAM 和 CPU,会减慢加载时间,并在用户的计算机或设备以及数据库上投入更多精力。但是,使用缓存系统,页面会呈现一次,然后存储为静态 HTML 文件,从而减少每个新访问者的加载时间。
晓得博客
2022/04/27
7.1K0
WordPress缓存插件WP Fastest Cache插件使用教程
相关推荐
WordPress 主题和插件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验