package org.python.core; public class PyClassMethodDescr extends PyMethodDescr { public PyClassMethodDescr(String name, Class c, int minargs, int maxargs, PyBuiltinFunction meth) { super(name, c, minargs, maxargs, meth); } protected void checkCallerType(PyObject obj) { if ((PyType) obj != dtype && !((PyType) obj).isSubType(dtype)) throw get_wrongtype((PyType) obj); } public PyObject __get__(PyObject obj, PyObject type) { if (obj != null) { checkCallerType(obj.getType()); return meth.bind(obj.getType()); } else if (type != null) { checkCallerType(type); return meth.bind(type); } return this; } }