一個會如何在Python類指定靜態方法或變量,在CPython的C++指定靜態變量?在C++ Python類
在PyTypeObject結構,tp_getset,tp_methods,tp_members似乎都假定類的一個實例。
非常感謝, 羅布。
一個會如何在Python類指定靜態方法或變量,在CPython的C++指定靜態變量?在C++ Python類
在PyTypeObject結構,tp_getset,tp_methods,tp_members似乎都假定類的一個實例。
非常感謝, 羅布。
靜態和類方法可以在tp_methods
通過添加METH_STATIC
或METH_CLASS
到PyMethodDef
結構的ml_flags
字段來定義。這相當於@staticmethod
和@classmethod
裝飾器。
該方法的第一個參數(通常是實例指針)將爲靜態方法的NULL
和類方法的PyTypeObject*
。
http://docs.python.org/c-api/structures.html#PyMethodDef
類屬性可以通過調用PyType_Ready()
(在你的模塊初始化函數)之前設置tp_dict
與這些屬性字典中加入。另外tp_dict
可以保留爲NULL
在這種情況下PyType_Ready()
將創建字典爲您服務。這些屬性可以添加到該字典中。
http://docs.python.org/c-api/typeobj.html#tp_dict
已計算類屬性需要一個描述符類,正是因爲在Python。與其他類屬性一樣,描述符的一個實例應該被添加到tp_dict
。
看到http://stackoverflow.com/questions/68645/static-class-variables-in-python –
http://docs.python.org/extending/extending.html的答案 –
第一個環節不請參閱C++ ,而第二個鏈接並未引用python類中的靜態變量。 在這些鏈接裏有什麼我缺少的與我的問題有關嗎?感謝 – rbairos