背景:今天,当我阅读源代码时,我对@staticmethod
感到好奇,并且我认为可以使用具有__get__
方法的类来实现此装饰器。确实可以做到,但是效率不高,所以我认为python可能会使用其他方法,例如在C源代码中完成它。我使用grep并发现它在funcobject.h
中被提及:
/* The classmethod and staticmethod types lives here, too */
PyAPI_DATA(PyTypeObject) PyClassMethod_Type;
PyAPI_DATA(PyTypeObject) PyStaticMethod_Type;
PyAPI_FUNC(PyObject *) PyClassMethod_New(PyObject *);
PyAPI_FUNC(PyObject *) PyStaticMethod_New(PyObject *);
但这只是一个头文件,我不知道如何继续我的探索。
所以我在这里提问:
当我想弄清楚某些功能的实现时,是否可以遵循任何有效的方法例程?
例如:python如何实现sort()
,它使用快速排序还是合并排序?它会消耗多长时间? O(nlogn)还是O(n2)?