“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> | ||
− | = | + | = 弱引用对象 = |
− | Python | + | Python 支持 ''弱引用'' 作为一等对象。 有两种直接实现弱引用的特定对象类型。 第一个是一个简单的引用对象,第二个尽可能地充当原始对象的代理。 |
− | |||
− | |||
− | |||
− | ; int < | + | ; <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 /> |
− | |||
− | + | : 如果 ''ob'' 是引用或代理对象,则返回 true。 此功能总是成功。 | |
− | : | ||
− | ; int < | + | ; <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 /> |
− | |||
− | < | + | : 如果 ''ob'' 是引用对象,则返回 true。 此功能总是成功。 |
− | < | + | |
− | < | + | ; <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 /> |
− | + | ||
− | + | : 如果 ''ob'' 是代理对象,则返回 true。 此功能总是成功。 | |
− | + | ||
− | + | ; [[../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 /> | |
− | + | ||
− | + | : 返回对象 ''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]]。 | |
− | + | ||
− | <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">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 /> |
− | + | : 返回对象 ''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]]。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <code>None</code> | ||
<dl> | <dl> | ||
− | <dt>[[../structures#c|PyObject]] *< | + | <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> | + | </dt> |
− | + | <dd><p>从弱引用返回被引用的对象,''ref''。 如果所指对象不再存在,则返回 <code>Py_None</code>。</p> | |
− | |||
<div class="admonition note"> | <div class="admonition note"> | ||
− | <p> | + | <p>笔记</p> |
− | <p> | + | <p>此函数返回一个 '''借用引用''' 到被引用对象。 这意味着您应该始终在对象上调用 [[../refcounting#c|Py_INCREF()]] ,除非您知道它在您仍在使用时无法销毁。</p> |
− | |||
− | |||
− | |||
</div></dd></dl> | </div></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_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 /> | |
− | + | ||
− | < | + | : 与 [[#c.PyWeakref_GetObject|PyWeakref_GetObject()]] 类似,但实现为不进行错误检查的宏。 |
− | + | ||
− | + | ||
+ | </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。 此功能总是成功。
- 返回对象 ob 的弱引用对象。 这将始终返回一个新的引用,但不保证会创建一个新对象; 可能会返回现有的引用对象。 第二个参数,callback,可以是一个可调用对象,当ob被垃圾回收时接收通知; 它应该接受一个参数,这将是弱引用对象本身。 callback 也可以是
None
或NULL
。 如果 ob 不是弱引用对象,或者 callback 不可调用、None
或NULL
,这将返回NULL
并引发 TypeError。
- 返回对象 ob 的弱引用代理对象。 这将始终返回一个新的引用,但不保证会创建一个新对象; 可能会返回现有的代理对象。 第二个参数,callback,可以是一个可调用对象,当ob被垃圾回收时接收通知; 它应该接受一个参数,这将是弱引用对象本身。 callback 也可以是
None
或NULL
。 如果 ob 不是弱引用对象,或者 callback 不可调用、None
或NULL
,这将返回NULL
并引发 TypeError。
- PyObject *PyWeakref_GetObject(PyObject *ref)
从弱引用返回被引用的对象,ref。 如果所指对象不再存在,则返回
Py_None
。笔记
此函数返回一个 借用引用 到被引用对象。 这意味着您应该始终在对象上调用 Py_INCREF() ,除非您知道它在您仍在使用时无法销毁。
- 与 PyWeakref_GetObject() 类似,但实现为不进行错误检查的宏。