向不可变类型子类添加属性

时间:2018-08-17 12:35:51

标签: python python-3.x attributes immutability

我一直在尝试模拟任意长度的二进制寄存器,该二进制寄存器将像Python int一样进行操作,但是会以固定长度进行初始化,并且具有特殊的上溢/下溢行为。 (即,您可以将其添加到其他int中,并获得相同长度的Register作为回报)

稍作阅读,似乎建议将int子类化,而我一直在阅读this关于不可变类型子类化的知识。但我无法确定如何向其添加属性。

在我看来这应该可行,因为我只是在尝试添加静态行为。但是形式的代码:

def __new__(S, size, *args, **kwargs)
    r = super(Register, S).__new__(S, 0)
    r.maxVal = 2**size
    return r

似乎是荒谬的,因为r是不可变的。我什至不知道该将maxVal放在哪里。它的确执行没有错误(尽管r = Register.__new__(Register, 16) ; print(r)重载,但调用0打印__repr__),但是我仍然不知道我在这里做什么。

因此,我寻求帮助。这种行为可能吗?这种方法正确吗?预先感谢。

0 个答案:

没有答案