pub trait Initializer: PyPayload {
type Args: FromArgs;
// Required method
fn init(
zelf: PyRef<Self>,
args: Self::Args,
vm: &VirtualMachine
) -> PyResult<()>;
// Provided methods
fn slot_init(
zelf: PyObjectRef,
args: FuncArgs,
vm: &VirtualMachine
) -> PyResult<()> { ... }
fn __init__(
zelf: PyRef<Self>,
args: Self::Args,
vm: &VirtualMachine
) -> PyResult<()> { ... }
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) { ... }
}