您可以使用如下结构获取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 __()方法相关推荐

  1. python tabula 使用方法_Python中os.walk()的使用方法

    os.walk()主要用来扫描某个指定目录下所包含的子目录和文件.这篇文章将通过几个简单的例子来说明python中os.walk()的使用方法. 假设我们的test文件夹有如下的目录结构: 我们首先用 ...

  2. python模块的使用方法_python中requests模块的使用方法

    本文实例讲述了python中requests模块的使用方法.分享给大家供大家参考.具体分析如下: 在HTTP相关处理中使用python是不必要的麻烦,这包括urllib2模块以巨大的复杂性代价获取综合 ...

  3. python中常见的双下方法_python中常见的双下方法_python面向对象(5)__特殊双下方法...

    双下方法 双下方法是开发python这个语言程序员用的,源码中使用的. 我们不能轻易使用双下方法.可能重新写object的源码,慎用!!! 双下方法特征:你不知道干啥了,就会触发某个双下方法 len ...

  4. python向量机使用方法_Python中支持向量机SVM的使用方法详解

    除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm. 一.导 ...

  5. python怎么调用方法_python中怎么调用自己的方法

    展开全部 C/C++对Python的调用2113层次可5261以分为三个层次, (1) 高层次的调用, (2)纯Python调用, (3) Python方法的4102扩展(也就使向Python输出调用 ...

  6. python字符串的方法和列表的方法_Python 中列表和字符串的方法总结

    一.列表 1.li.append()        #添加元素到末尾,返回none 2.li.clear()            #清空列表,一个比较危险的方法(QAQ) 3.li.copy()   ...

  7. python文件操作的方法_python中文件操作的基本方法

    在python中对一个文件进行操作,分为三大步:打开,操作,关闭 首先创建一个文件hello,里面内容为hello world 一.打开一个文件 #open('文件名或文件路径','操作模式',文件里 ...

  8. python排序的方法_python中排序的一种方法

    谢谢你的关心,但我不能接受这个.在 例如,在python3中,我有一个列表.在import os list = [] for carpeta in os.listdir(os.getcwd()): i ...

  9. python 连通域_python中验证码连通域分割的方法详解

    实现思路 是用深度遍历,对图片进行二值化处理,先找到一个黑色像素,然后对这个像素的周围8个像素进行判断,如果没有访问过,就保存起来,然后最后这个数组的最小x和最大x就是x轴上的切割位置.这种分割的方法 ...

最新文章

  1. Matlab中计算程序运行时间的三种方法
  2. 算法----------最长上升子序列(Java 版本)
  3. 三大纪律七项注意(Access数据库)
  4. JS重写Alert方法
  5. QT - Could not load the Qt platform plugin xcb in even though it was found.
  6. Ubuntu 12.04安装下载工具 UGet 1.8.0 及 aria2用法
  7. 【学习笔记】APP测试基本流程及测试要点
  8. 测试基础-01-软件测试的定义与分类
  9. shell脚本 把一个文件的内容全部转换为大写
  10. 3ds Max2021软件安装包+安装教程
  11. gflags的交叉编译
  12. Javascript实战应用篇(2):继续完善网页文本框系列(增加水印和提示)
  13. Datax下载、安装、定时同步配置
  14. android自动夜间模式,Android实现日夜间模式的深入理解
  15. 广州如何下载公积金的缴交证明和个人信息表
  16. Redis5.0+——集群搭建,水平扩容
  17. 实体识别BERT-MRC论文阅读笔记
  18. 英国Hostinger免费空间申请和使用教程
  19. python词云图片生成
  20. 16、爬取知乎大v张佳玮的文章“标题”、“摘要”、“链接”,并存储到本地文件...

热门文章

  1. 哈佛NLP组论文解读:基于隐变量的注意力模型 | 附开源代码
  2. HDU 1853 HDU 3488【有向环最小权值覆盖问题 】带权二分图匹配 KM算法
  3. LeetCode 两数之和
  4. Struts2-从值栈获取list集合数据(三种方式)
  5. Spring Cloud——基于Dubbo的分布式Session解决方案
  6. Axios——Axios封装DEMO
  7. PyCharm——turtle库的画布悬停解决方案
  8. Windows——系统盘隐藏分区功能
  9. Tiling_easy version
  10. arcscene如何显示标注_CAD制图初学入门:CAD制图软件中如何添加多重标注?