diff --git a/py/dict.go b/py/dict.go index f2b93d26..94974a00 100644 --- a/py/dict.go +++ b/py/dict.go @@ -174,3 +174,15 @@ func (a StringDict) M__ne__(other Object) (Object, error) { } return True, nil } + +func (a StringDict) M__contains__(other Object) (Object, error) { + key, ok := other.(String) + if !ok { + return nil, ExceptionNewf(KeyError, "FIXME can only have string keys!: %v", key) + } + + if _, ok := a[string(key)]; ok { + return True, nil + } + return False, nil +} diff --git a/py/tests/dict.py b/py/tests/dict.py index dcd1f2c9..418792a4 100644 --- a/py/tests/dict.py +++ b/py/tests/dict.py @@ -28,4 +28,9 @@ if k == "c": assert v == 5.5 +doc="__contain__" +a = {'hello': 'world'} +assert a.__contains__('hello') +assert not a.__contains__('world') + doc="finished"