Emulate an int in python
我想定义一个与int行为完全相同的对象,它有一些微小的区别。考虑班级
1 2 3 | class MyInt: def __init__(self, num): self.num = num |
我需要启用以下行为:当
1 2 3 4 | i = MyInt(10) a = i print(type(a)) # <class 'int'> print(a) # 10 |
号
换句话说,
我想这可以通过让
免责声明:我需要这样做,以便在函数内部全局修改变量。我知道不建议这样做,但这是我唯一的选择。我也不能用
你不能那样做。python中没有允许您调整分配的挂钩。
绑定对象的方法有很多种,对于python,
但是,
在大多数情况下,可以使
1 2 3 | >>> from numbers import Integral >>> sorted(Integral.__abstractmethods__) ['__abs__', '__add__', '__and__', '__ceil__', '__eq__', '__floor__', '__floordiv__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__neg__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rtruediv__', '__rxor__', '__truediv__', '__trunc__', '__xor__'] |
由于任何不可实例化的子类,这些子类会立即向您反馈是否遗漏了这些方法。
已经提供的方法有:
1 2 3 | >>> from numbers import Number >>> sorted(n for n in dir(Integral) if n not in Integral.__abstractmethods__.union(dir(Number))) ['__bool__', '__complex__', '__divmod__', '__float__', '__index__', '__rdivmod__', '__rsub__', '__sub__', 'conjugate', 'denominator', 'imag', 'numerator', 'real'] |
号
你真的想提供一个合适的