python方法_Python中的通用__eq __()方法
您可以使用如下结构获取Class的所有属性:
from itertools import chain
@classmethod
def _properties(cls):
type_dict = dict(chain.from_iterable(typ.__dict__.items() for typ in reversed(cls.mro())))
return {k for k, v in type_dict.items() if 'property' in str(v)}
__eq__会变成这样:
def __eq__(self, other):
properties = self._properties() & other._properties()
if other._properties() > properties and self._properties() > properties:
# types are not comparable
return False
try:
return all(getattr(self, prop) == getattr(other, prop) for prop in properties)
except AttributeError:
return False
使用反转(cls.mro())的原因是这样的事情也有效:
class Worker(Person):
@property
def wage(self):
return 0
p4 = Worker('Raymond', 'Salemi')
print(p4 == p3)
06003
python方法_Python中的通用__eq __()方法相关推荐
- python tabula 使用方法_Python中os.walk()的使用方法
os.walk()主要用来扫描某个指定目录下所包含的子目录和文件.这篇文章将通过几个简单的例子来说明python中os.walk()的使用方法. 假设我们的test文件夹有如下的目录结构: 我们首先用 ...
- python模块的使用方法_python中requests模块的使用方法
本文实例讲述了python中requests模块的使用方法.分享给大家供大家参考.具体分析如下: 在HTTP相关处理中使用python是不必要的麻烦,这包括urllib2模块以巨大的复杂性代价获取综合 ...
- python中常见的双下方法_python中常见的双下方法_python面向对象(5)__特殊双下方法...
双下方法 双下方法是开发python这个语言程序员用的,源码中使用的. 我们不能轻易使用双下方法.可能重新写object的源码,慎用!!! 双下方法特征:你不知道干啥了,就会触发某个双下方法 len ...
- python向量机使用方法_Python中支持向量机SVM的使用方法详解
除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm. 一.导 ...
- python怎么调用方法_python中怎么调用自己的方法
展开全部 C/C++对Python的调用2113层次可5261以分为三个层次, (1) 高层次的调用, (2)纯Python调用, (3) Python方法的4102扩展(也就使向Python输出调用 ...
- python字符串的方法和列表的方法_Python 中列表和字符串的方法总结
一.列表 1.li.append() #添加元素到末尾,返回none 2.li.clear() #清空列表,一个比较危险的方法(QAQ) 3.li.copy() ...
- python文件操作的方法_python中文件操作的基本方法
在python中对一个文件进行操作,分为三大步:打开,操作,关闭 首先创建一个文件hello,里面内容为hello world 一.打开一个文件 #open('文件名或文件路径','操作模式',文件里 ...
- python排序的方法_python中排序的一种方法
谢谢你的关心,但我不能接受这个.在 例如,在python3中,我有一个列表.在import os list = [] for carpeta in os.listdir(os.getcwd()): i ...
- python 连通域_python中验证码连通域分割的方法详解
实现思路 是用深度遍历,对图片进行二值化处理,先找到一个黑色像素,然后对这个像素的周围8个像素进行判断,如果没有访问过,就保存起来,然后最后这个数组的最小x和最大x就是x轴上的切割位置.这种分割的方法 ...
最新文章
- Matlab中计算程序运行时间的三种方法
- 算法----------最长上升子序列(Java 版本)
- 三大纪律七项注意(Access数据库)
- JS重写Alert方法
- QT - Could not load the Qt platform plugin xcb in even though it was found.
- Ubuntu 12.04安装下载工具 UGet 1.8.0 及 aria2用法
- 【学习笔记】APP测试基本流程及测试要点
- 测试基础-01-软件测试的定义与分类
- shell脚本 把一个文件的内容全部转换为大写
- 3ds Max2021软件安装包+安装教程
- gflags的交叉编译
- Javascript实战应用篇(2):继续完善网页文本框系列(增加水印和提示)
- Datax下载、安装、定时同步配置
- android自动夜间模式,Android实现日夜间模式的深入理解
- 广州如何下载公积金的缴交证明和个人信息表
- Redis5.0+——集群搭建,水平扩容
- 实体识别BERT-MRC论文阅读笔记
- 英国Hostinger免费空间申请和使用教程
- python词云图片生成
- 16、爬取知乎大v张佳玮的文章“标题”、“摘要”、“链接”,并存储到本地文件...
热门文章
- 哈佛NLP组论文解读:基于隐变量的注意力模型 | 附开源代码
- HDU 1853 HDU 3488【有向环最小权值覆盖问题 】带权二分图匹配 KM算法
- LeetCode 两数之和
- Struts2-从值栈获取list集合数据(三种方式)
- Spring Cloud——基于Dubbo的分布式Session解决方案
- Axios——Axios封装DEMO
- PyCharm——turtle库的画布悬停解决方案
- Windows——系统盘隐藏分区功能
- Tiling_easy version
- arcscene如何显示标注_CAD制图初学入门:CAD制图软件中如何添加多重标注?