diff --git a/vm/src/obj/objnamespace.rs b/vm/src/obj/objnamespace.rs index 7ef304c1e..518ad4d34 100644 --- a/vm/src/obj/objnamespace.rs +++ b/vm/src/obj/objnamespace.rs @@ -11,6 +11,7 @@ use crate::vm::VirtualMachine; pub struct PyNamespace; impl PyValue for PyNamespace { + const HAVE_DICT: bool = true; fn class(vm: &VirtualMachine) -> PyClassRef { vm.ctx.namespace_type() } @@ -18,12 +19,13 @@ impl PyValue for PyNamespace { #[pyimpl] impl PyNamespace { - #[pymethod(name = "__init__")] - fn init(zelf: PyRef, kwargs: KwArgs, vm: &VirtualMachine) -> PyResult<()> { + #[pyslot(new)] + fn tp_new(cls: PyClassRef, kwargs: KwArgs, vm: &VirtualMachine) -> PyResult> { + let zelf = PyNamespace.into_ref_with_type(vm, cls)?; for (name, value) in kwargs.into_iter() { vm.set_attr(zelf.as_object(), name, value)?; } - Ok(()) + Ok(zelf) } }