From 70fe087566d21fdec1dffa90805e6ee485db64ea Mon Sep 17 00:00:00 2001 From: Jeong YunWon Date: Thu, 15 Aug 2019 15:45:10 +0900 Subject: [PATCH] object.__subclasshook__ empty classmethod --- tests/snippets/object.py | 4 ++++ vm/src/obj/objobject.rs | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/snippets/object.py b/tests/snippets/object.py index 6845a0b3e..663a2cd76 100644 --- a/tests/snippets/object.py +++ b/tests/snippets/object.py @@ -7,6 +7,10 @@ myobj = MyObject() assert myobj == myobj assert not myobj != myobj +object.__subclasshook__() == NotImplemented +object.__subclasshook__(1) == NotImplemented +object.__subclasshook__(1, 2) == NotImplemented + assert MyObject().__eq__(MyObject()) == NotImplemented assert MyObject().__ne__(MyObject()) == NotImplemented assert MyObject().__lt__(MyObject()) == NotImplemented diff --git a/vm/src/obj/objobject.rs b/vm/src/obj/objobject.rs index 8f2408dba..416dd2324 100644 --- a/vm/src/obj/objobject.rs +++ b/vm/src/obj/objobject.rs @@ -118,6 +118,10 @@ fn object_repr(zelf: PyObjectRef, _vm: &VirtualMachine) -> String { format!("<{} object at 0x{:x}>", zelf.class().name, zelf.get_id()) } +fn object_subclasshook(vm: &VirtualMachine, _args: PyFuncArgs) -> PyResult { + Ok(vm.ctx.not_implemented()) +} + pub fn object_dir(obj: PyObjectRef, vm: &VirtualMachine) -> PyResult { let attributes: PyAttributes = objtype::get_attributes(obj.class()); @@ -179,7 +183,8 @@ pub fn init(context: &PyContext) { "__repr__" => context.new_rustfunc(object_repr), "__format__" => context.new_rustfunc(object_format), "__getattribute__" => context.new_rustfunc(object_getattribute), - "__doc__" => context.new_str(object_doc.to_string()) + "__subclasshook__" => context.new_classmethod(object_subclasshook), + "__doc__" => context.new_str(object_doc.to_string()), }); }