“Python/docs/3.9/c-api/method”的版本间差异
来自菜鸟教程
Python/docs/3.9/c-api/method
(autoload) |
小 (Page commit) |
||
第1行: | 第1行: | ||
+ | {{DISPLAYTITLE:实例方法对象 — Python 文档}} | ||
<div id="instance-method-objects" class="section"> | <div id="instance-method-objects" class="section"> | ||
<span id="instancemethod-objects"></span> | <span id="instancemethod-objects"></span> | ||
− | = | + | = 实例方法对象 = |
− | + | 实例方法是 [[../structures#c|PyCFunction]] 的包装器以及将 [[../structures#c|PyCFunction]] 绑定到类对象的新方法。 它取代了之前的调用 <code>PyMethod_New(func, NULL, class)</code>。 | |
− | |||
− | <code>PyMethod_New(func, NULL, class)</code> | ||
− | ; [[../type#c|PyTypeObject]] < | + | ; [[../type#c|<span class="n"><span class="pre">PyTypeObject</span></span>]]<span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyInstanceMethod_Type</span></span></span><br /> |
− | |||
− | + | : [[../type#c|PyTypeObject]] 的这个实例表示 Python 实例方法类型。 它不会暴露给 Python 程序。 | |
− | |||
− | < | + | ; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyInstanceMethod_Check</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">o</span></span><span class="sig-paren">)</span><br /> |
− | < | ||
− | < | ||
− | < | ||
− | |||
− | |||
− | + | : 如果 ''o'' 是实例方法对象(类型为 [[#c.PyInstanceMethod_Type|PyInstanceMethod_Type]]),则返回 true。 参数不得为 <code>NULL</code>。 此功能总是成功。 | |
− | |||
− | |||
− | |||
− | + | ; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyInstanceMethod_New</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">func</span></span><span class="sig-paren">)</span><br /> | |
− | + | ||
− | < | + | : 返回一个新的实例方法对象,其中 ''func'' 是任何可调用对象 ''func'' 是调用实例方法时将调用的函数。 |
− | < | + | |
+ | ; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyInstanceMethod_Function</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">im</span></span><span class="sig-paren">)</span><br /> | ||
+ | |||
+ | : 返回与实例方法 ''im'' 关联的函数对象。 | ||
+ | |||
+ | ; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyInstanceMethod_GET_FUNCTION</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">im</span></span><span class="sig-paren">)</span><br /> | ||
+ | |||
+ | : [[#c.PyInstanceMethod_Function|PyInstanceMethod_Function()]] 的宏版本,可避免错误检查。 | ||
第36行: | 第32行: | ||
<span id="id1"></span> | <span id="id1"></span> | ||
− | = | + | = 方法对象 = |
+ | |||
+ | 方法是绑定的函数对象。 方法总是绑定到用户定义类的实例。 未绑定的方法(绑定到类对象的方法)不再可用。 | ||
+ | |||
+ | ; [[../type#c|<span class="n"><span class="pre">PyTypeObject</span></span>]]<span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyMethod_Type</span></span></span><br /> | ||
+ | |||
+ | : [[../type#c|PyTypeObject]] 的这个实例表示 Python 方法类型。 这以 <code>types.MethodType</code> 的形式暴露给 Python 程序。 | ||
+ | |||
+ | ; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyMethod_Check</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">o</span></span><span class="sig-paren">)</span><br /> | ||
+ | |||
+ | : 如果 ''o'' 是方法对象(类型为 [[#c.PyMethod_Type|PyMethod_Type]]),则返回 true。 参数不得为 <code>NULL</code>。 此功能总是成功。 | ||
+ | |||
+ | ; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyMethod_New</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">func</span></span>, [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">self</span></span><span class="sig-paren">)</span><br /> | ||
+ | |||
+ | : 返回一个新的方法对象,其中 ''func'' 是任何可调用对象,而 ''self'' 是方法应该绑定的实例。 ''func'' 是调用方法时会调用的函数。 ''self'' 不能是 <code>NULL</code>。 | ||
+ | |||
+ | ; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyMethod_Function</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">meth</span></span><span class="sig-paren">)</span><br /> | ||
+ | |||
+ | : 返回与方法 ''meth'' 关联的函数对象。 | ||
+ | |||
+ | ; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyMethod_GET_FUNCTION</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">meth</span></span><span class="sig-paren">)</span><br /> | ||
− | + | : [[#c.PyMethod_Function|PyMethod_Function()]] 的宏版本,可避免错误检查。 | |
− | |||
− | |||
− | ; [[../ | + | ; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyMethod_Self</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">meth</span></span><span class="sig-paren">)</span><br /> |
− | |||
− | + | : 返回与方法 ''meth'' 关联的实例。 | |
− | : | ||
− | + | ; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyMethod_GET_SELF</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">meth</span></span><span class="sig-paren">)</span><br /> | |
− | |||
− | < | ||
− | < | ||
− | |||
− | |||
− | + | : [[#c.PyMethod_Self|PyMethod_Self()]] 的宏版本,可避免错误检查。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | < | + | </div> |
− | < | + | <div class="clearer"> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</div> | </div> | ||
− | [[Category:Python 3.9 | + | [[Category:Python 3.9 文档]] |
2021年10月31日 (日) 04:50的最新版本
实例方法对象
实例方法是 PyCFunction 的包装器以及将 PyCFunction 绑定到类对象的新方法。 它取代了之前的调用 PyMethod_New(func, NULL, class)
。
- PyTypeObject PyInstanceMethod_Type
- PyTypeObject 的这个实例表示 Python 实例方法类型。 它不会暴露给 Python 程序。
- int PyInstanceMethod_Check(PyObject *o)
- 如果 o 是实例方法对象(类型为 PyInstanceMethod_Type),则返回 true。 参数不得为
NULL
。 此功能总是成功。
- 返回一个新的实例方法对象,其中 func 是任何可调用对象 func 是调用实例方法时将调用的函数。
- 返回与实例方法 im 关联的函数对象。
- PyInstanceMethod_Function() 的宏版本,可避免错误检查。
方法对象
方法是绑定的函数对象。 方法总是绑定到用户定义类的实例。 未绑定的方法(绑定到类对象的方法)不再可用。
- PyTypeObject PyMethod_Type
- PyTypeObject 的这个实例表示 Python 方法类型。 这以
types.MethodType
的形式暴露给 Python 程序。
- int PyMethod_Check(PyObject *o)
- 如果 o 是方法对象(类型为 PyMethod_Type),则返回 true。 参数不得为
NULL
。 此功能总是成功。
- 返回一个新的方法对象,其中 func 是任何可调用对象,而 self 是方法应该绑定的实例。 func 是调用方法时会调用的函数。 self 不能是
NULL
。
- 返回与方法 meth 关联的函数对象。
- PyMethod_Function() 的宏版本,可避免错误检查。
- 返回与方法 meth 关联的实例。
- PyMethod_Self() 的宏版本,可避免错误检查。