Python - 具有 "don' t care"值的数字类

标签 python numpy bit

我正在尝试创建一个简单的数据类型,用作 Numpy 数组的 dtype,我可以在其上执行元素明智的加法、减法和比较。该类型应具有(至少)三个值,分别表示真、假和“无关”(DC)。后者等于 true 和 false,并且在加法和减法中表现得像零:

>>> MyDtype(True) == MyDtype(DC) == MyDtype(True)    # note reflection
True
>>> MyDtype(False) == MyDtype(DC) == MyDtype(False)  # ditto
True
>>> MyDtype(True) == MyDtype(False)
False
>>> MyDtype(True) - MyDtype(DC) == MyDtype(True)
True
>>> MyDtype(DC) + MyDtype(False) == MyDtype(False)
True

我完全不知道如何以一种理智的方式获得这些语义。

最佳答案

您可以使用魔术函数来控制对您的类对象的算术运算。如果左侧的对象未实现相应的非反射操作,您甚至可以控制反射操作。

魔术方法的综合文档可以在这里找到(链接指向算术运算符部分,后面是关于反射算术运算的部分): http://www.rafekettler.com/magicmethods.html#numeric

我遇到了同样的问题并编写了一个类,其对象是 dontcare 符号。它不完全是您要求的,因为它不包装值,但应该很容易根据您的需要进行调整。 你可以在这里得到它: https://github.com/keepitfree/nicerpython

from symbols import dontcare

True == dontcare == True
>>> True
False == dontcare == False
>>> True
True == False
>>> False
True - dontcare == True
>>> True
dontcare + False == False
>>> True

关于Python - 具有 "don' t care"值的数字类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327372/

相关文章:

python - Selenium Web 驱动程序使用 POST 请求导航到页面

python - 没有 for 循环的 Numpy 数组

python - 填补 numpy 数组中的空白

java - 函数传递每个整数 n 并打印将 n 存储为有符号整数所需的最小位数

python - matplotlib plt.Rectangle 的奇怪行为

python - 列表查找比集合查找慢

C++ 原始数据类型 : how to read unsigned 30 bits

php - Mysql 存储大量位大小的设置

python - 仅当该值存在时,才通过查找另一个数据框来替换列中的值

python - 拟合双极 sigmoid python