pub trait SetAttr: PyPayload {
// Required method
fn setattro(
zelf: &Py<Self>,
name: &Py<PyStr>,
value: PySetterValue,
vm: &VirtualMachine
) -> PyResult<()>;
// Provided methods
fn slot_setattro(
obj: &PyObject,
name: &Py<PyStr>,
value: PySetterValue,
vm: &VirtualMachine
) -> PyResult<()> { ... }
fn setattr(
zelf: PyRef<Self>,
name: PyStrRef,
value: PyObjectRef,
vm: &VirtualMachine
) -> PyResult<()> { ... }
fn delattr(
zelf: PyRef<Self>,
name: PyStrRef,
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) { ... }
}