python原子的透明包装

时间:2018-12-26 17:32:25

标签: python oop object

我想通过包装对象s.t扩展python中某些原子值的行为。当包装器不知道该怎么做时,它将自行解包。 包装器应该是不可知的,所以任何东西都可以放入其中。

让我们通过以下测试:

logicalPoints4

以上测试不检查可交换性,所以这是2级:

    def test_wrapper_object_adds_functionality_on_top_of_int():
        wrapper = MagicWrap(2)
        assert wrapper+2 == 4
        assert wrapper*2 == 4
        assert wrapper**2 == 4
        assert wrapper.foo() == "bar"

    def test_wrapper_object_adds_functionality_on_top_of_str():
        wrapper = MagicWrap("foo")
        assert wrapper+"2" == "foo2"
        assert wrapper*2 == "foofoo"
        assert wrapper.foo() == "bar"

仅满足1级要求的答案仍然很有趣。

我专门使用python 3。

0 个答案:

没有答案