スライス記法を利用できるメソッドを自作したい。


スライス記法を利用できるメソッドを自作したいです。  
クラスを作成し、__getitem__メソッドをオーバーライドすることで、  
スライス記法が利用できることが分かりました。  
__getitem__以外のメソッドの引数で、スライス記法を利用できるようにするには、  
どうしたらよいでしょうか？

my_list[1:2] ←これはできました。  
my_list.my_method[1:2] ←これができるようにしたいです。

[code]

    import typing as t
    
    
    class CustomList():
        def __init__(self, list: t.List[t.Any] = None):
            self.list = list or []
    
        def get_item(self, index: t.Union[int, slice]) -> t.List[int]:
            # 独自メソッド
            return self.list[index]
    
        def __getitem__(self, index: t.Union[int, slice]) -> t.List[int]:
            # 組み込み関数を追加
            return self.list[index]
    
    
    print('◇独自メソッドの呼び出し')
    custom_list = CustomList([11, 22, 33, 44])
    print(custom_list.get_item(1))
    # print(custom_list.get_item(1:2))  # ←SyntaxError: invalid syntaxが発生する。
    
    print('◇インデクサをオバーライドした場合')
    print(custom_list[1])
    print(custom_list[1:2])
    
[/code]

以下、実行結果です。

[code]

    ◇独自メソッドの呼び出し
    22
    ◇インデクサをオバーライドした場合
    22
    [22]
    
[/code]




メソッドの呼び出しでは `instance.method(arg, ..)` の書式 (丸括弧) になり  
その中ではスライスは使えないはずです。

メソッドではなくデータのメンバーであれば(そしてそれが シーケンスオブジェクトであれば)可能

[code]

    class Cls:
        def __init__(self, list: t.List[t.Any] = None):
            self.list = list or []
        # self.list は publicなメンバーとする
    
    v = Cls([11, 22, 33, 44])
    print(v.list[1])
    print(v.list[1:2])
    
[/code]




メソッドの呼び出しでは `instance.method(arg, ..)` の書式 (丸括弧) になり  
その中ではスライスは使えないはずです。

メソッドではなくデータのメンバーであれば(そしてそれが シーケンスオブジェクトであれば)可能

[code]

    class Cls:
        def __init__(self, list: t.List[t.Any] = None):
            self.list = list or []
        # self.list は publicなメンバーとする
    
    v = Cls([11, 22, 33, 44])
    print(v.list[1])
    print(v.list[1:2])
    
[/code]

