Я хочу расширить поведение некоторых атомарных значений в python через объект-обертку, чтобы он сам разворачивался, когда обертка не знает, что делать.Оболочка должна быть независимой от своего атома, поэтому внутри может поместиться что угодно2:
def test_wrapper_is_commutative_as_int():
wrapper = MagicWrap(2)
assert 2+wrapper == 4
assert 2*wrapper == 4
assert 2**wrapper == 4
assert wrapper.foo() == "bar"
def test_wrapper_is_commutative_as_str():
wrapper = MagicWrap("foo")
assert "2"+wrapper == "2foo"
assert 2*wrapper == "foofoo"
assert wrapper.foo() == "bar"
Был бы по-прежнему интересен ответ, удовлетворяющий только уровню 1.
Я специально использую Python 3.