diff --git a/include/boost/python/object_core.hpp b/include/boost/python/object_core.hpp index 0342ef2e..5857422f 100644 --- a/include/boost/python/object_core.hpp +++ b/include/boost/python/object_core.hpp @@ -126,6 +126,10 @@ namespace api const_object_objattribute attr(object const&) const; object_objattribute attr(object const&); + // Wrap 'in' operator (aka. __contains__) + template + object contains(T const& key) const; + // item access // const_object_item operator[](object_cref) const; @@ -483,6 +487,15 @@ object api::object_operators::operator()(detail::args_proxy const &args, } + +template +template +object api::object_operators::contains(T const& key) const +{ + return this->attr("__contains__")(object(key)); +} + + inline object::object() : object_base(python::incref(Py_None)) {} diff --git a/src/dict.cpp b/src/dict.cpp index 441b0257..77d840d4 100644 --- a/src/dict.cpp +++ b/src/dict.cpp @@ -84,7 +84,7 @@ object dict_base::get(object_cref k, object_cref d) const bool dict_base::has_key(object_cref k) const { - return extract(this->attr("has_key")(k)); + return extract(this->contains(k)); } list dict_base::items() const