解決したいこと
オブジェクト o があるとき、
o.xxx にアクセスし、かつ、 o.xxx(args...) のアクセスを実現可能か、
ご存じでしたら教えていただけませんか。
実現できるか知りたいことは、およそ次のテストコードです:
python
1def test_リストを参照する(): 2 o = C() 3 assert o.lists == [10,20,30] 4 5 6def test_リストの要素を限定する条件を与える(): 7 o = C() 8 assert o.lists(index=1) == 10
この例は、
o.lists
ではリストを、
o.lists(条件)
ではリストの一部に限定してアクセスする
といったことを実現したいコードです。
環境
Python 3以上
(Edited)
以下、追記しました。
背景
うまく説明できず申し訳ありません。VBAの例であれば、worksheetsのように、引数として条件指定でき、かつ、括弧なしでPythonのプロパティのようにアクセスできるが、これをPythonで実現するのにどうすればよいか、を投稿したものです。
経緯としては、pythonパッケージの設計であり、tachikomaさんのようにする場合、ある属性に対して同名の限りはプロパティか、メソッドかの二者択一なので、
この属性はプロパティ、この属性はメソッドで引数なしアクセスまたは引数ありアクセス、となり、利用者に混乱させてしまう、 また、パッケージの仕様更新でパッケージに依存するコードが動かなくなる、を心配しています。
次点はo.lists.where(index=1)のようにアクセスさせる案ですが、クラスが乱立しそうで、その案に向かう前に本件を確認できれば良いな、と考えた次第です。
あなたの回答
tips
プレビュー