“Python/docs/3.9/c-api/weakref”的版本间差异

来自菜鸟教程
Python/docs/3.9/c-api/weakref
跳转至:导航、​搜索
(autoload)
 
(Page commit)
 
第1行: 第1行:
 +
{{DISPLAYTITLE:弱引用对象 — Python 文档}}
 
<div id="weak-reference-objects" class="section">
 
<div id="weak-reference-objects" class="section">
  
 
<span id="weakrefobjects"></span>
 
<span id="weakrefobjects"></span>
= Weak Reference Objects =
+
= 弱引用对象 =
  
Python supports ''weak references'' as first-class objects. There are two
+
Python 支持 ''弱引用'' 作为一等对象。 有两种直接实现弱引用的特定对象类型。 第一个是一个简单的引用对象,第二个尽可能地充当原始对象的代理。
specific object types which directly implement weak references. The first is a
 
simple reference object, and the second acts as a proxy for the original object
 
as much as it can.
 
  
; int <code>PyWeakref_Check</code><span class="sig-paren">(</span>ob<span class="sig-paren">)</span>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyWeakref_Check</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">ob</span></span><span class="sig-paren">)</span><br />
: Return true if ''ob'' is either a reference or proxy object.
 
  
; int <code>PyWeakref_CheckRef</code><span class="sig-paren">(</span>ob<span class="sig-paren">)</span>
+
: 如果 ''ob'' 是引用或代理对象,则返回 true。 此功能总是成功。
: Return true if ''ob'' is a reference object.
 
  
; int <code>PyWeakref_CheckProxy</code><span class="sig-paren">(</span>ob<span class="sig-paren">)</span>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyWeakref_CheckRef</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">ob</span></span><span class="sig-paren">)</span><br />
: Return true if ''ob'' is a proxy object.
 
  
<dl>
+
: 如果 ''ob'' 是引用对象,则返回 true。 此功能总是成功。
<dt>[[../structures#c|PyObject]] *<code>PyWeakref_NewRef</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''ob'', [[../structures#c|PyObject]] *''callback''<span class="sig-paren">)</span></dt>
+
 
<dd><p>''Return value: New reference.''</p>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyWeakref_CheckProxy</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">ob</span></span><span class="sig-paren">)</span><br />
<p>Return a weak reference object for the object ''ob''. This will always return
+
 
a new reference, but is not guaranteed to create a new object; an existing
+
: 如果 ''ob'' 是代理对象,则返回 true。 此功能总是成功。
reference object may be returned. The second parameter, ''callback'', can be a
+
 
callable object that receives notification when ''ob'' is garbage collected; it
+
; [[../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">PyWeakref_NewRef</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">ob</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">callback</span></span><span class="sig-paren">)</span><br />
should accept a single parameter, which will be the weak reference object
+
 
itself. ''callback'' may also be <code>None</code> or <code>NULL</code>. If ''ob'' is not a
+
: 返回对象 ''ob'' 的弱引用对象。 这将始终返回一个新的引用,但不保证会创建一个新对象; 可能会返回现有的引用对象。 第二个参数,''callback'',可以是一个可调用对象,当''ob''被垃圾回收时接收通知; 它应该接受一个参数,这将是弱引用对象本身。 ''callback'' 也可以是 <code>None</code> <code>NULL</code>。 如果 ''ob'' 不是弱引用对象,或者 ''callback'' 不可调用、<code>None</code> <code>NULL</code>,这将返回 <code>NULL</code> 并引发 [[../../library/exceptions#TypeError|TypeError]]。
weakly-referencable object, or if ''callback'' is not callable, <code>None</code>, or
+
 
<code>NULL</code>, this will return <code>NULL</code> and raise [[../../library/exceptions#TypeError|<code>TypeError</code>]].</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">PyWeakref_NewProxy</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">ob</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">callback</span></span><span class="sig-paren">)</span><br />
  
<dl>
+
: 返回对象 ''ob'' 的弱引用代理对象。 这将始终返回一个新的引用,但不保证会创建一个新对象; 可能会返回现有的代理对象。 第二个参数,''callback'',可以是一个可调用对象,当''ob''被垃圾回收时接收通知; 它应该接受一个参数,这将是弱引用对象本身。 ''callback'' 也可以是 <code>None</code> <code>NULL</code>。 如果 ''ob'' 不是弱引用对象,或者 ''callback'' 不可调用、<code>None</code> <code>NULL</code>,这将返回 <code>NULL</code> 并引发 [[../../library/exceptions#TypeError|TypeError]]
<dt>[[../structures#c|PyObject]] *<code>PyWeakref_NewProxy</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''ob'', [[../structures#c|PyObject]] *''callback''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: New reference.''</p>
 
<p>Return a weak reference proxy object for the object ''ob''. This will always
 
return a new reference, but is not guaranteed to create a new object; an
 
existing proxy object may be returned. The second parameter, ''callback'', can
 
be a callable object that receives notification when ''ob'' is garbage
 
collected; it should accept a single parameter, which will be the weak
 
reference object itself. ''callback'' may also be <code>None</code> or <code>NULL</code>. If ''ob''
 
is not a weakly-referencable object, or if ''callback'' is not callable,
 
<code>None</code>, or <code>NULL</code>, this will return <code>NULL</code> and raise [[../../library/exceptions#TypeError|<code>TypeError</code>]].</p></dd></dl>
 
  
 
<dl>
 
<dl>
<dt>[[../structures#c|PyObject]] *<code>PyWeakref_GetObject</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''ref''<span class="sig-paren">)</span></dt>
+
<dt>[[../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">PyWeakref_GetObject</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">ref</span></span><span class="sig-paren">)</span><br />
<dd><p>''Return value: Borrowed reference.''</p>
+
</dt>
<p>Return the referenced object from a weak reference, ''ref''. If the referent is
+
<dd><p>从弱引用返回被引用的对象,''ref''。 如果所指对象不再存在,则返回 <code>Py_None</code></p>
no longer live, returns <code>Py_None</code>.</p>
 
 
<div class="admonition note">
 
<div class="admonition note">
  
<p>注解</p>
+
<p>笔记</p>
<p>This function returns a '''borrowed reference''' to the referenced object.
+
<p>此函数返回一个 '''借用引用''' 到被引用对象。 这意味着您应该始终在对象上调用 [[../refcounting#c|Py_INCREF()]] ,除非您知道它在您仍在使用时无法销毁。</p>
This means that you should always call [[../refcounting#c|<code>Py_INCREF()</code>]] on the object
 
except if you know that it cannot be destroyed while you are still
 
using it.</p>
 
  
 
</div></dd></dl>
 
</div></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">PyWeakref_GET_OBJECT</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">ref</span></span><span class="sig-paren">)</span><br />
<dt>[[../structures#c|PyObject]] *<code>PyWeakref_GET_OBJECT</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''ref''<span class="sig-paren">)</span></dt>
+
 
<dd><p>''Return value: Borrowed reference.''</p>
+
: 与 [[#c.PyWeakref_GetObject|PyWeakref_GetObject()]] 类似,但实现为不进行错误检查的宏。
<p>Similar to [[#c.PyWeakref_GetObject|<code>PyWeakref_GetObject()</code>]], but implemented as a macro that does no
+
 
error checking.</p></dd></dl>
+
 
 +
</div>
 +
<div class="clearer">
 +
 
  
  
 
</div>
 
</div>
  
[[Category:Python 3.9 中文文档]]
+
[[Category:Python 3.9 文档]]

2021年10月31日 (日) 04:50的最新版本

弱引用对象

Python 支持 弱引用 作为一等对象。 有两种直接实现弱引用的特定对象类型。 第一个是一个简单的引用对象,第二个尽可能地充当原始对象的代理。

int PyWeakref_Check(ob)
如果 ob 是引用或代理对象,则返回 true。 此功能总是成功。
int PyWeakref_CheckRef(ob)
如果 ob 是引用对象,则返回 true。 此功能总是成功。
int PyWeakref_CheckProxy(ob)
如果 ob 是代理对象,则返回 true。 此功能总是成功。
PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback)
返回对象 ob 的弱引用对象。 这将始终返回一个新的引用,但不保证会创建一个新对象; 可能会返回现有的引用对象。 第二个参数,callback,可以是一个可调用对象,当ob被垃圾回收时接收通知; 它应该接受一个参数,这将是弱引用对象本身。 callback 也可以是 NoneNULL。 如果 ob 不是弱引用对象,或者 callback 不可调用、NoneNULL,这将返回 NULL 并引发 TypeError
PyObject *PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
返回对象 ob 的弱引用代理对象。 这将始终返回一个新的引用,但不保证会创建一个新对象; 可能会返回现有的代理对象。 第二个参数,callback,可以是一个可调用对象,当ob被垃圾回收时接收通知; 它应该接受一个参数,这将是弱引用对象本身。 callback 也可以是 NoneNULL。 如果 ob 不是弱引用对象,或者 callback 不可调用、NoneNULL,这将返回 NULL 并引发 TypeError
PyObject *PyWeakref_GetObject(PyObject *ref)

从弱引用返回被引用的对象,ref。 如果所指对象不再存在,则返回 Py_None

笔记

此函数返回一个 借用引用 到被引用对象。 这意味着您应该始终在对象上调用 Py_INCREF() ,除非您知道它在您仍在使用时无法销毁。

PyObject *PyWeakref_GET_OBJECT(PyObject *ref)
PyWeakref_GetObject() 类似,但实现为不进行错误检查的宏。