“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>
= Instance Method Objects =
+
= 实例方法对象 =
  
An instance method is a wrapper for a [[../structures#c|<code>PyCFunction</code>]] and the new way
+
实例方法是 [[../structures#c|PyCFunction]] 的包装器以及将 [[../structures#c|PyCFunction]] 绑定到类对象的新方法。 它取代了之前的调用 <code>PyMethod_New(func, NULL, class)</code>
to bind a [[../structures#c|<code>PyCFunction</code>]] to a class object. It replaces the former call
 
<code>PyMethod_New(func, NULL, class)</code>.
 
  
; [[../type#c|PyTypeObject]] <code>PyInstanceMethod_Type</code>
+
; [[../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 />
: This instance of [[../type#c|<code>PyTypeObject</code>]] represents the Python instance method type. It is not exposed to Python programs.
 
  
; int <code>PyInstanceMethod_Check</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''o''<span class="sig-paren">)</span>
+
: [[../type#c|PyTypeObject]] 的这个实例表示 Python 实例方法类型。 它不会暴露给 Python 程序。
: Return true if ''o'' is an instance method object (has type [[#c.PyInstanceMethod_Type|<code>PyInstanceMethod_Type</code>]]). The parameter must not be <code>NULL</code>.
 
  
<dl>
+
; <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 />
<dt>[[../structures#c|PyObject]] *<code>PyInstanceMethod_New</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''func''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: New reference.''</p>
 
<p>Return a new instance method object, with ''func'' being any callable object
 
''func'' is the function that will be called when the instance method is
 
called.</p></dd></dl>
 
  
<dl>
+
: 如果 ''o'' 是实例方法对象(类型为 [[#c.PyInstanceMethod_Type|PyInstanceMethod_Type]]),则返回 true。 参数不得为 <code>NULL</code>。 此功能总是成功。
<dt>[[../structures#c|PyObject]] *<code>PyInstanceMethod_Function</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''im''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: Borrowed reference.''</p>
 
<p>Return the function object associated with the instance method ''im''.</p></dd></dl>
 
  
<dl>
+
; [[../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 />
<dt>[[../structures#c|PyObject]] *<code>PyInstanceMethod_GET_FUNCTION</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''im''<span class="sig-paren">)</span></dt>
+
 
<dd><p>''Return value: Borrowed reference.''</p>
+
: 返回一个新的实例方法对象,其中 ''func'' 是任何可调用对象 ''func'' 是调用实例方法时将调用的函数。
<p>Macro version of [[#c.PyInstanceMethod_Function|<code>PyInstanceMethod_Function()</code>]] which avoids error checking.</p></dd></dl>
+
 
 +
; [[../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>
= Method Objects =
+
= 方法对象 =
 +
 
 +
方法是绑定的函数对象。 方法总是绑定到用户定义类的实例。 未绑定的方法(绑定到类对象的方法)不再可用。
 +
 
 +
; [[../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 />
  
Methods are bound function objects. Methods are always bound to an instance of
+
: [[#c.PyMethod_Function|PyMethod_Function()]] 的宏版本,可避免错误检查。
a user-defined class. Unbound methods (methods bound to a class object) are
 
no longer available.
 
  
; [[../type#c|PyTypeObject]] <code>PyMethod_Type</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_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 />
: This instance of [[../type#c|<code>PyTypeObject</code>]] represents the Python method type. This is exposed to Python programs as <code>types.MethodType</code>.
 
  
; int <code>PyMethod_Check</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''o''<span class="sig-paren">)</span>
+
: 返回与方法 ''meth'' 关联的实例。
: Return true if ''o'' is a method object (has type [[#c.PyMethod_Type|<code>PyMethod_Type</code>]]). The parameter must not be <code>NULL</code>.
 
  
<dl>
+
; [[../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 />
<dt>[[../structures#c|PyObject]] *<code>PyMethod_New</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''func'', [[../structures#c|PyObject]] *''self''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: New reference.''</p>
 
<p>Return a new method object, with ''func'' being any callable object and ''self''
 
the instance the method should be bound. ''func'' is the function that will
 
be called when the method is called. ''self'' must not be <code>NULL</code>.</p></dd></dl>
 
  
<dl>
+
: [[#c.PyMethod_Self|PyMethod_Self()]] 的宏版本,可避免错误检查。
<dt>[[../structures#c|PyObject]] *<code>PyMethod_Function</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''meth''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: Borrowed reference.''</p>
 
<p>Return the function object associated with the method ''meth''.</p></dd></dl>
 
  
<dl>
 
<dt>[[../structures#c|PyObject]] *<code>PyMethod_GET_FUNCTION</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''meth''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: Borrowed reference.''</p>
 
<p>Macro version of [[#c.PyMethod_Function|<code>PyMethod_Function()</code>]] which avoids error checking.</p></dd></dl>
 
  
<dl>
+
</div>
<dt>[[../structures#c|PyObject]] *<code>PyMethod_Self</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''meth''<span class="sig-paren">)</span></dt>
+
<div class="clearer">
<dd><p>''Return value: Borrowed reference.''</p>
 
<p>Return the instance associated with the method ''meth''.</p></dd></dl>
 
  
<dl>
 
<dt>[[../structures#c|PyObject]] *<code>PyMethod_GET_SELF</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''meth''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: Borrowed reference.''</p>
 
<p>Macro version of [[#c.PyMethod_Self|<code>PyMethod_Self()</code>]] which avoids error checking.</p></dd></dl>
 
  
  
 
</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。 此功能总是成功。
PyObject *PyInstanceMethod_New(PyObject *func)
返回一个新的实例方法对象,其中 func 是任何可调用对象 func 是调用实例方法时将调用的函数。
PyObject *PyInstanceMethod_Function(PyObject *im)
返回与实例方法 im 关联的函数对象。
PyObject *PyInstanceMethod_GET_FUNCTION(PyObject *im)
PyInstanceMethod_Function() 的宏版本,可避免错误检查。


方法对象

方法是绑定的函数对象。 方法总是绑定到用户定义类的实例。 未绑定的方法(绑定到类对象的方法)不再可用。

PyTypeObject PyMethod_Type
PyTypeObject 的这个实例表示 Python 方法类型。 这以 types.MethodType 的形式暴露给 Python 程序。
int PyMethod_Check(PyObject *o)
如果 o 是方法对象(类型为 PyMethod_Type),则返回 true。 参数不得为 NULL。 此功能总是成功。
PyObject *PyMethod_New(PyObject *func, PyObject *self)
返回一个新的方法对象,其中 func 是任何可调用对象,而 self 是方法应该绑定的实例。 func 是调用方法时会调用的函数。 self 不能是 NULL
PyObject *PyMethod_Function(PyObject *meth)
返回与方法 meth 关联的函数对象。
PyObject *PyMethod_GET_FUNCTION(PyObject *meth)
PyMethod_Function() 的宏版本,可避免错误检查。
PyObject *PyMethod_Self(PyObject *meth)
返回与方法 meth 关联的实例。
PyObject *PyMethod_GET_SELF(PyObject *meth)
PyMethod_Self() 的宏版本,可避免错误检查。