pub trait Representable: PyPayload {
// Required method
fn repr_str(zelf: &Py<Self>, vm: &VirtualMachine) -> PyResult<String>;
// Provided methods
fn slot_repr(zelf: &PyObject, vm: &VirtualMachine) -> PyResult<PyStrRef> { ... }
fn __repr__(zelf: PyObjectRef, vm: &VirtualMachine) -> PyResult<PyStrRef> { ... }
fn repr(zelf: &Py<Self>, vm: &VirtualMachine) -> PyResult<PyStrRef> { ... }
fn __extend_method_def(method_defs: &mut Vec<PyMethodDef>) { ... }
fn __extend_py_class(ctx: &Context, class: &'static Py<PyType>) { ... }
fn __extend_slots(slots: &mut PyTypeSlots) { ... }
}