1
- # Copyright (C) 2001-2024 , Python Software Foundation
1
+ # Copyright (C) 2001-2025 , Python Software Foundation
2
2
# This file is distributed under the same license as the Python package.
3
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
3
+ # Translators:
4
+ # Matt Wang <mattwang44@gmail.com>, 2025
4
5
#
5
6
#, fuzzy
6
7
msgid ""
@@ -9,7 +10,7 @@ msgstr ""
9
10
"Report-Msgid-Bugs-To : \n "
10
11
"POT-Creation-Date : 2025-01-22 00:13+0000\n "
11
12
"PO-Revision-Date : YEAR-MO-DA HO:MI+ZONE\n "
12
- "Last-Translator : FULL NAME <EMAIL@ADDRESS >\n "
13
+ "Last-Translator : Matt Wang <mattwang44@gmail.com >\n "
13
14
"Language-Team : Chinese - TAIWAN (https://github.com/python/python-docs-zh- "
14
15
"tw)\n "
15
16
"Language : zh_TW\n "
@@ -19,49 +20,61 @@ msgstr ""
19
20
20
21
#: ../../howto/mro.rst:4
21
22
msgid "The Python 2.3 Method Resolution Order"
22
- msgstr ""
23
+ msgstr "Python 2.3 方法解析順序 "
23
24
24
25
#: ../../howto/mro.rst:8
26
+ #, fuzzy
25
27
msgid ""
26
28
"This is a historical document, provided as an appendix to the official "
27
29
"documentation. The Method Resolution Order discussed here was *introduced* "
28
30
"in Python 2.3, but it is still used in later versions -- including Python 3."
29
31
msgstr ""
32
+ "這是一份歷史文件,作為官方文件的附錄。這裡討論的方法解析順序是在 Python 2.3 "
33
+ "中「引入」的,但它仍在更高版本中使用——包括 Python 3。"
30
34
31
35
#: ../../howto/mro.rst:13
32
36
msgid "By `Michele Simionato <https://www.phyast.pitt.edu/~micheles/>`__."
33
- msgstr ""
37
+ msgstr "作者:`Michele Simionato <https://www.phyast.pitt.edu/~micheles/>`__。 "
34
38
35
39
#: ../../howto/mro.rst:0
36
40
msgid "Abstract"
37
41
msgstr "摘要"
38
42
39
43
#: ../../howto/mro.rst:17
44
+ #, fuzzy
40
45
msgid ""
41
46
"*This document is intended for Python programmers who want to understand the "
42
47
"C3 Method Resolution Order used in Python 2.3. Although it is not intended "
43
48
"for newbies, it is quite pedagogical with many worked out examples. I am "
44
49
"not aware of other publicly available documents with the same scope, "
45
50
"therefore it should be useful.*"
46
51
msgstr ""
52
+ "*本文件適用於想要了解 Python 2.3 中所使用的 C3 方法解析順序的 Python 程式設計"
53
+ "師。儘管它不適合新手,但它具有許多教學意義,並提供了許多範例。我不知道其他具"
54
+ "有相同範圍的公開文件,因此它應該有用。"
47
55
48
56
#: ../../howto/mro.rst:23
49
57
msgid "Disclaimer:"
50
- msgstr ""
58
+ msgstr "免責聲明: "
51
59
52
60
#: ../../howto/mro.rst:25
61
+ #, fuzzy
53
62
msgid ""
54
63
"*I donate this document to the Python Software Foundation, under the Python "
55
64
"2.3 license. As usual in these circumstances, I warn the reader that what "
56
65
"follows* should *be correct, but I don't give any warranty. Use it at your "
57
66
"own risk and peril!*"
58
67
msgstr ""
68
+ "*我根據 Python 2.3 許可證將本文件捐贈給 Python 軟體基金會。像往常一樣,在這些"
69
+ "情況下,我警告讀者以下內容*應該是正確的,但我不提供任何保證。使用它需要你自擔"
70
+ "風險和危險!"
59
71
60
72
#: ../../howto/mro.rst:30
61
73
msgid "Acknowledgments:"
62
- msgstr "致謝"
74
+ msgstr "致謝: "
63
75
64
76
#: ../../howto/mro.rst:32
77
+ #, fuzzy
65
78
msgid ""
66
79
"*All the people of the Python mailing list who sent me their support. Paul "
67
80
"Foley who pointed out various imprecisions and made me to add the part on "
@@ -70,16 +83,22 @@ msgid ""
70
83
"Rossum who enthusiastically added this document to the official Python 2.3 "
71
84
"home-page.*"
72
85
msgstr ""
86
+ "*Python 郵件清單中所有向我發送支援的人。Paul Foley 指出了各種不精確之處,並讓"
87
+ "我加入有關區域優先順序的部分。David Goodger 尋求有關 reStructuredText 格式設"
88
+ "定的協助。David Mertz 尋求編輯協助。最後,Guido van Rossum 熱情地將此文件新增"
89
+ "到官方 Python 2.3 主頁。"
73
90
74
91
#: ../../howto/mro.rst:40
92
+ #, fuzzy
75
93
msgid "The beginning"
76
- msgstr ""
94
+ msgstr "開始 "
77
95
78
96
#: ../../howto/mro.rst:42
79
97
msgid "*Felix qui potuit rerum cognoscere causas* -- Virgilius"
80
- msgstr ""
98
+ msgstr "*Felix qui potuit rerum cognoscere causas* -- Virgilius "
81
99
82
100
#: ../../howto/mro.rst:44
101
+ #, fuzzy
83
102
msgid ""
84
103
"Everything started with a post by Samuele Pedroni to the Python development "
85
104
"mailing list [#]_. In his post, Samuele showed that the Python 2.2 method "
@@ -91,8 +110,15 @@ msgid ""
91
110
"readable discussion of the C3 algorithm for Pythonistas who want to "
92
111
"understand the reasons for the change."
93
112
msgstr ""
113
+ "一切都始於 Samuele Pedroni 在 Python 開發郵件清單 [#]_ 上發表的一篇文章。"
114
+ "Samuele 在他的文章中表明,Python 2.2 方法解析順序不是單調的,他建議用 C3 方法"
115
+ "解析順序取代它。Guido 同意他的觀點,因此現在 Python 2.3 使用 C3。C3 方法本身"
116
+ "與 Python 無關,因為它是由 Dylan 的工作人員發明的,並且在一篇針對 lispers "
117
+ "[#]_ 的論文中對其進行了描述。本文對 C3 演演算法進行了(希望)可讀的討論,供那"
118
+ "些想要了解更改原因的 Python 愛好者參考。"
94
119
95
120
#: ../../howto/mro.rst:55
121
+ #, fuzzy
96
122
msgid ""
97
123
"First of all, let me point out that what I am going to say only applies to "
98
124
"the *new style classes* introduced in Python 2.2: *classic classes* "
@@ -103,46 +129,64 @@ msgid ""
103
129
"differs from the Python 2.2 method resolution order are so rare that no real "
104
130
"breaking of code is expected. Therefore:"
105
131
msgstr ""
132
+ "首先,讓我指出,我要說的內容僅適用於 Python 2.2 中引入的「新樣式類別」:「經"
133
+ "典類別」保持其舊的方法解析順序,深度優先,然後從左到右。因此,經典類別不會破"
134
+ "壞舊程式碼;即使原則上可能會破壞 Python 2.2 新樣式類別的程式碼,但實際上,C3 "
135
+ "解析順序與 Python 2.2 方法解析順序不同的情況非常罕見,因此不會出現真正的程式"
136
+ "碼破壞。所以:"
106
137
107
138
#: ../../howto/mro.rst:64
108
139
msgid "*Don't be scared!*"
109
- msgstr ""
140
+ msgstr "*別怕!* "
110
141
111
142
#: ../../howto/mro.rst:66
143
+ #, fuzzy
112
144
msgid ""
113
145
"Moreover, unless you make strong use of multiple inheritance and you have "
114
146
"non-trivial hierarchies, you don't need to understand the C3 algorithm, and "
115
147
"you can easily skip this paper. On the other hand, if you really want to "
116
148
"know how multiple inheritance works, then this paper is for you. The good "
117
149
"news is that things are not as complicated as you might expect."
118
150
msgstr ""
151
+ "此外,除非你強烈使用多重繼承並且你具有重要的層次結構,否則你不需要了解 C3 演"
152
+ "演算法,並且可以輕鬆跳過本文。另一方面,如果你確實想了解多重繼承是如何運作"
153
+ "的,那麼本文適合你。好消息是事情並不像你想像的那麼複雜。"
119
154
120
155
#: ../../howto/mro.rst:73
121
156
msgid "Let me begin with some basic definitions."
122
- msgstr ""
157
+ msgstr "讓我從一些基本定義開始。 "
123
158
124
159
#: ../../howto/mro.rst:75
160
+ #, fuzzy
125
161
msgid ""
126
162
"Given a class C in a complicated multiple inheritance hierarchy, it is a non-"
127
163
"trivial task to specify the order in which methods are overridden, i.e. to "
128
164
"specify the order of the ancestors of C."
129
165
msgstr ""
166
+ "給定一個複雜的多重繼承層次結構中的類別 C,指定方法被重寫的順序(即指定 C 的祖"
167
+ "先的順序)是一項艱鉅的任務。"
130
168
131
169
#: ../../howto/mro.rst:79
170
+ #, fuzzy
132
171
msgid ""
133
172
"The list of the ancestors of a class C, including the class itself, ordered "
134
173
"from the nearest ancestor to the furthest, is called the class precedence "
135
174
"list or the *linearization* of C."
136
175
msgstr ""
176
+ "類別 C 的祖先清單(包括類別本身)從最近的祖先到最遠的祖先排序,稱為類別優先列"
177
+ "表或 C 的\\ *線性化 (linearization)*。"
137
178
138
179
#: ../../howto/mro.rst:83
139
180
msgid ""
140
181
"The *Method Resolution Order* (MRO) is the set of rules that construct the "
141
182
"linearization. In the Python literature, the idiom \" the MRO of C\" is also "
142
183
"used as a synonymous for the linearization of the class C."
143
184
msgstr ""
185
+ "*方法解析順序* (Method Resolution Order, MRO) 是建構線性化的一組規則。在 "
186
+ "Python 文獻中,習慣用語「C 的 MRO」也是 C 類別線性化的同義詞。"
144
187
145
188
#: ../../howto/mro.rst:88
189
+ #, fuzzy
146
190
msgid ""
147
191
"For instance, in the case of single inheritance hierarchy, if C is a "
148
192
"subclass of C1, and C1 is a subclass of C2, then the linearization of C is "
@@ -151,8 +195,13 @@ msgid ""
151
195
"it is more difficult to construct a linearization that respects *local "
152
196
"precedence ordering* and *monotonicity*."
153
197
msgstr ""
198
+ "例如,在單一繼承層次結構的情況下,如果 C 是 C1 的子類別,且 C1 是 C2 的子類"
199
+ "別,那麼 C 的線性化就是串列 [C, C1 , C2]。然而,對於多重繼承層次結構,線性化"
200
+ "的建構更加麻煩,因為建構尊重\\ *局部優先順序 (local precedence ordering)*\\ "
201
+ "和\\ *單調性 (monotonicity)*\\ 的線性化更加困難。"
154
202
155
203
#: ../../howto/mro.rst:96
204
+ #, fuzzy
156
205
msgid ""
157
206
"I will discuss the local precedence ordering later, but I can give the "
158
207
"definition of monotonicity here. A MRO is monotonic when the following is "
@@ -162,24 +211,35 @@ msgid ""
162
211
"potentially introducing very subtle bugs. Examples where this happens will "
163
212
"be shown later."
164
213
msgstr ""
214
+ "稍後我將討論局部優先順序,但我可以在這裡給出單調性的定義。當滿足以下條件時,"
215
+ "MRO 是單調的:*如果在 C 的線性化中 C1 領先於 C2,則在 C 的任何子類別的線性化"
216
+ "中 C1 領先於 C2*。否則,衍生新類別的無害操作可能會改變方法的解析順序,從而可"
217
+ "能引入非常微妙的錯誤。稍後將顯示發生這種情況的範例。"
165
218
166
219
#: ../../howto/mro.rst:104
220
+ #, fuzzy
167
221
msgid ""
168
222
"Not all classes admit a linearization. There are cases, in complicated "
169
223
"hierarchies, where it is not possible to derive a class such that its "
170
224
"linearization respects all the desired properties."
171
225
msgstr ""
226
+ "並非所有類別都承認線性化。在某些情況下,在複雜的層次結構中,不可能衍生出一個"
227
+ "類別,使其線性化尊重所有所需的屬性。"
172
228
173
229
#: ../../howto/mro.rst:108
230
+ #, fuzzy
174
231
msgid "Here I give an example of this situation. Consider the hierarchy"
175
- msgstr ""
232
+ msgstr "這裡我舉一個例子來說明這種情況。考慮層次結構 "
176
233
177
234
#: ../../howto/mro.rst:116
235
+ #, fuzzy
178
236
msgid ""
179
237
"which can be represented with the following inheritance graph, where I have "
180
238
"denoted with O the ``object`` class, which is the beginning of any hierarchy "
181
239
"for new style classes:"
182
240
msgstr ""
241
+ "可以用下面的繼承圖來表示,其中我用 O 表示 ``object`` 類別,它是新樣式類別的任"
242
+ "何層次結構的開始:"
183
243
184
244
#: ../../howto/mro.rst:120
185
245
msgid ""
@@ -206,108 +266,131 @@ msgstr ""
206
266
" ?"
207
267
208
268
#: ../../howto/mro.rst:133
269
+ #, fuzzy
209
270
msgid ""
210
271
"In this case, it is not possible to derive a new class C from A and B, since "
211
272
"X precedes Y in A, but Y precedes X in B, therefore the method resolution "
212
273
"order would be ambiguous in C."
213
274
msgstr ""
275
+ "在這種情況下,不可能從 A 和 B 衍生出新的類別 C,因為在 A 中 X 在 Y 之前,但"
276
+ "在 B 中 Y 在 X 之前,因此 C 中的方法解析順序將不明確。"
214
277
215
278
#: ../../howto/mro.rst:137
279
+ #, fuzzy
216
280
msgid ""
217
281
"Python 2.3 raises an exception in this situation (TypeError: MRO conflict "
218
282
"among bases Y, X) forbidding the naive programmer from creating ambiguous "
219
283
"hierarchies. Python 2.2 instead does not raise an exception, but chooses an "
220
284
"*ad hoc* ordering (CABXYO in this case)."
221
285
msgstr ""
286
+ "Python 2.3 在這種情況下引發了一個例外(TypeError:基數 Y、X 之間的 MRO 衝"
287
+ "突),禁止天真的程式設計師建立不明確的層次結構。 相反,Python 2.2 不會引發例"
288
+ "外,而是選擇*暫時* 排序(在本例中為 CABXYO)。"
222
289
223
290
#: ../../howto/mro.rst:143
291
+ #, fuzzy
224
292
msgid "The C3 Method Resolution Order"
225
- msgstr ""
293
+ msgstr "C3 方法解析順序 "
226
294
227
295
#: ../../howto/mro.rst:145
296
+ #, fuzzy
228
297
msgid ""
229
298
"Let me introduce a few simple notations which will be useful for the "
230
299
"following discussion. I will use the shortcut notation::"
231
- msgstr ""
300
+ msgstr "讓我介紹一些對下面的討論有用的簡單符號。 我將使用快捷符號:: "
232
301
233
302
#: ../../howto/mro.rst:148
234
303
msgid "C1 C2 ... CN"
235
304
msgstr "C1 C2 ... CN"
236
305
237
306
#: ../../howto/mro.rst:150
307
+ #, fuzzy
238
308
msgid "to indicate the list of classes [C1, C2, ... , CN]."
239
- msgstr ""
309
+ msgstr "指示類別串列 [C1, C2, ... , CN]。 "
240
310
241
311
#: ../../howto/mro.rst:152
312
+ #, fuzzy
242
313
msgid "The *head* of the list is its first element::"
243
- msgstr ""
314
+ msgstr "串列的 *head* 是它的第一個元素: :: "
244
315
245
316
#: ../../howto/mro.rst:154
246
317
msgid "head = C1"
247
318
msgstr "head = C1"
248
319
249
320
#: ../../howto/mro.rst:156
321
+ #, fuzzy
250
322
msgid "whereas the *tail* is the rest of the list::"
251
- msgstr ""
323
+ msgstr "而 *tail* 是清單的其餘部分: :: "
252
324
253
325
#: ../../howto/mro.rst:158
254
326
msgid "tail = C2 ... CN."
255
327
msgstr "tail = C2 ... CN."
256
328
257
329
#: ../../howto/mro.rst:160
330
+ #, fuzzy
258
331
msgid "I shall also use the notation::"
259
- msgstr ""
332
+ msgstr "我也會使用符號: :: "
260
333
261
334
#: ../../howto/mro.rst:162
262
335
msgid "C + (C1 C2 ... CN) = C C1 C2 ... CN"
263
336
msgstr "C + (C1 C2 ... CN) = C C1 C2 ... CN"
264
337
265
338
#: ../../howto/mro.rst:164
339
+ #, fuzzy
266
340
msgid "to denote the sum of the lists [C] + [C1, C2, ... ,CN]."
267
- msgstr ""
341
+ msgstr "表示串列 [C] + [C1, C2, ... ,CN] 的總和。 "
268
342
269
343
#: ../../howto/mro.rst:166
344
+ #, fuzzy
270
345
msgid "Now I can explain how the MRO works in Python 2.3."
271
- msgstr ""
346
+ msgstr "現在我可以解釋 MRO 在 Python 2.3 中是如何運作的。 "
272
347
273
348
#: ../../howto/mro.rst:168
349
+ #, fuzzy
274
350
msgid ""
275
351
"Consider a class C in a multiple inheritance hierarchy, with C inheriting "
276
352
"from the base classes B1, B2, ... , BN. We want to compute the "
277
353
"linearization L[C] of the class C. The rule is the following:"
278
354
msgstr ""
355
+ "考慮多重繼承層次結構中的類別 C,其中 C 繼承自基底類別 B1, B2, ... , BN。我們"
356
+ "要計算 C 類別的線性化 L[C]。"
279
357
280
358
#: ../../howto/mro.rst:173
359
+ #, fuzzy
281
360
msgid ""
282
361
"*the linearization of C is the sum of C plus the merge of the linearizations "
283
362
"of the parents and the list of the parents.*"
284
- msgstr ""
363
+ msgstr "*C 的線性化是 C 的總和加上父級線性化和父級串列的合併。 "
285
364
286
365
#: ../../howto/mro.rst:176
287
366
msgid "In symbolic notation::"
288
- msgstr ""
367
+ msgstr "用符號標示法: :: "
289
368
290
369
#: ../../howto/mro.rst:178
291
370
msgid "L[C(B1 ... BN)] = C + merge(L[B1] ... L[BN], B1 ... BN)"
292
371
msgstr "L[C(B1 ... BN)] = C + merge(L[B1] ... L[BN], B1 ... BN)"
293
372
294
373
#: ../../howto/mro.rst:180
374
+ #, fuzzy
295
375
msgid ""
296
376
"In particular, if C is the ``object`` class, which has no parents, the "
297
377
"linearization is trivial::"
298
378
msgstr ""
379
+ "特別是,如果 C 是沒有父類別的 ``object`` 類別,則線性化是微不足道的: ::"
299
380
300
381
#: ../../howto/mro.rst:183
301
382
msgid "L[object] = object."
302
383
msgstr "L[object] = object."
303
384
304
385
#: ../../howto/mro.rst:185
386
+ #, fuzzy
305
387
msgid ""
306
388
"However, in general one has to compute the merge according to the following "
307
389
"prescription:"
308
- msgstr ""
390
+ msgstr "然而,通常必須根據以下規定來計算合併: "
309
391
310
392
#: ../../howto/mro.rst:188
393
+ #, fuzzy
311
394
msgid ""
312
395
"*take the head of the first list, i.e L[B1][0]; if this head is not in the "
313
396
"tail of any of the other lists, then add it to the linearization of C and "
@@ -317,42 +400,54 @@ msgid ""
317
400
"this case, it is impossible to construct the merge, Python 2.3 will refuse "
318
401
"to create the class C and will raise an exception.*"
319
402
msgstr ""
403
+ "*取第一個清單的頭部,即L[B1][0];如果這個頭不在任何其他串列的尾部,則將其新增"
404
+ "到 C 的線性化中,並將其從合併的串列中刪除,否則請查看下一個串列的頭並取出它,"
405
+ "如果它是一個好頭。然後重複操作,直到所有的類別都被移除或無法找到好的頭。在這"
406
+ "種情況下,不可能建構合併,Python 2.3 將拒絕建立類別 C 並引發例外。"
320
407
321
408
#: ../../howto/mro.rst:197
409
+ #, fuzzy
322
410
msgid ""
323
411
"This prescription ensures that the merge operation *preserves* the ordering, "
324
412
"if the ordering can be preserved. On the other hand, if the order cannot be "
325
413
"preserved (as in the example of serious order disagreement discussed above) "
326
414
"then the merge cannot be computed."
327
415
msgstr ""
416
+ "如果可以保留順序,則此規定可確保合併操作「保留」順序。另一方面,如果無法保留"
417
+ "順序(如上面討論的嚴重順序不一致的範例),則無法計算合併。"
328
418
329
419
#: ../../howto/mro.rst:202
420
+ #, fuzzy
330
421
msgid ""
331
422
"The computation of the merge is trivial if C has only one parent (single "
332
423
"inheritance); in this case::"
333
424
msgstr ""
425
+ "如果 C 只有一個父級(單繼承),則合併的計算是微不足道的;在這種情況下: ::"
334
426
335
427
#: ../../howto/mro.rst:205
336
428
msgid "L[C(B)] = C + merge(L[B],B) = C + L[B]"
337
429
msgstr "L[C(B)] = C + merge(L[B],B) = C + L[B]"
338
430
339
431
#: ../../howto/mro.rst:207
432
+ #, fuzzy
340
433
msgid ""
341
434
"However, in the case of multiple inheritance things are more cumbersome and "
342
435
"I don't expect you can understand the rule without a couple of examples ;-)"
343
436
msgstr ""
437
+ "但是,在多重繼承的情況下,事情會更加麻煩,我不希望你在沒有幾個示例的情況下理"
438
+ "解該規則;-)"
344
439
345
440
#: ../../howto/mro.rst:212
346
441
msgid "Examples"
347
442
msgstr "範例"
348
443
349
444
#: ../../howto/mro.rst:214
350
445
msgid "First example. Consider the following hierarchy:"
351
- msgstr ""
446
+ msgstr "第一個例子,請參考以下層次結構: "
352
447
353
448
#: ../../howto/mro.rst:224
354
449
msgid "In this case the inheritance graph can be drawn as:"
355
- msgstr ""
450
+ msgstr "在這種情況下,繼承圖可以繪製為: "
356
451
357
452
#: ../../howto/mro.rst:226
358
453
msgid ""
@@ -378,10 +473,32 @@ msgid ""
378
473
"Level 0 0 | A | (more specialized)\n"
379
474
" ---"
380
475
msgstr ""
476
+ " 6\n"
477
+ " ---\n"
478
+ "Level 3 | O | (more general)\n"
479
+ " / --- \\ \n"
480
+ " / | \\ |\n"
481
+ " / | \\ |\n"
482
+ " / | \\ |\n"
483
+ " --- --- --- |\n"
484
+ "Level 2 3 | D | 4| E | | F | 5 |\n"
485
+ " --- --- --- |\n"
486
+ " \\ \\ _ / | |\n"
487
+ " \\ / \\ _ | |\n"
488
+ " \\ / \\ | |\n"
489
+ " --- --- |\n"
490
+ "Level 1 1 | B | | C | 2 |\n"
491
+ " --- --- |\n"
492
+ " \\ / |\n"
493
+ " \\ / \\ /\n"
494
+ " ---\n"
495
+ "Level 0 0 | A | (more specialized)\n"
496
+ " ---"
381
497
382
498
#: ../../howto/mro.rst:251
499
+ #, fuzzy
383
500
msgid "The linearizations of O,D,E and F are trivial::"
384
- msgstr ""
501
+ msgstr "O、D、E 和 F 的線性化很簡單: :: "
385
502
386
503
#: ../../howto/mro.rst:253
387
504
msgid ""
@@ -390,31 +507,41 @@ msgid ""
390
507
"L[E] = E O\n"
391
508
"L[F] = F O"
392
509
msgstr ""
510
+ "L[O] = O\n"
511
+ "L[D] = D O\n"
512
+ "L[E] = E O\n"
513
+ "L[F] = F O"
393
514
394
515
#: ../../howto/mro.rst:258
516
+ #, fuzzy
395
517
msgid "The linearization of B can be computed as::"
396
- msgstr ""
518
+ msgstr "B 的線性化可以計算為: :: "
397
519
398
520
#: ../../howto/mro.rst:260
399
521
msgid "L[B] = B + merge(DO, EO, DE)"
400
522
msgstr "L[B] = B + merge(DO, EO, DE)"
401
523
402
524
#: ../../howto/mro.rst:262
525
+ #, fuzzy
403
526
msgid ""
404
527
"We see that D is a good head, therefore we take it and we are reduced to "
405
528
"compute ``merge(O,EO,E)``. Now O is not a good head, since it is in the "
406
529
"tail of the sequence EO. In this case the rule says that we have to skip to "
407
530
"the next sequence. Then we see that E is a good head; we take it and we are "
408
531
"reduced to compute ``merge(O,O)`` which gives O. Therefore::"
409
532
msgstr ""
533
+ "我們看到 D 是一個好頭,因此我們接受它並簡化為計算「merge(O,EO,E)」。 現在 O "
534
+ "不是一個好的頭,因為它位於序列 EO 的尾部。在這種情況下,規則規定我們必須跳到"
535
+ "下一個序列。那我們看到E是一個好頭;我們接受它並簡化為計算“merge(O,O)”,它給"
536
+ "出 O。因此: ::"
410
537
411
538
#: ../../howto/mro.rst:268
412
539
msgid "L[B] = B D E O"
413
540
msgstr "L[B] = B D E O"
414
541
415
542
#: ../../howto/mro.rst:270
416
543
msgid "Using the same procedure one finds::"
417
- msgstr ""
544
+ msgstr "使用相同的程序可以發現: :: "
418
545
419
546
#: ../../howto/mro.rst:272
420
547
msgid ""
@@ -430,7 +557,7 @@ msgstr ""
430
557
431
558
#: ../../howto/mro.rst:277
432
559
msgid "Now we can compute::"
433
- msgstr ""
560
+ msgstr "現在我們可以計算出: :: "
434
561
435
562
#: ../../howto/mro.rst:279
436
563
msgid ""
@@ -451,25 +578,31 @@ msgstr ""
451
578
" = A B C D E F O"
452
579
453
580
#: ../../howto/mro.rst:287
581
+ #, fuzzy
454
582
msgid ""
455
583
"In this example, the linearization is ordered in a pretty nice way according "
456
584
"to the inheritance level, in the sense that lower levels (i.e. more "
457
585
"specialized classes) have higher precedence (see the inheritance graph). "
458
586
"However, this is not the general case."
459
587
msgstr ""
588
+ "在此範例中,線性化根據繼承層級以非常好的方式排序,從某種意義上說,較低層級"
589
+ "(即更專業的類別)具有更高的優先權(請參閱繼承圖)。然而,這不是一般情況。"
460
590
461
591
#: ../../howto/mro.rst:292
462
592
msgid ""
463
593
"I leave as an exercise for the reader to compute the linearization for my "
464
594
"second example:"
465
- msgstr ""
595
+ msgstr "第二個範例的線性化之計算我留給讀者當作練習: "
466
596
467
597
#: ../../howto/mro.rst:303
598
+ #, fuzzy
468
599
msgid ""
469
- "The only difference with the previous example is the change B(D,E) --> B(E, "
470
- "D); however even such a little modification completely changes the ordering "
471
- "of the hierarchy:"
600
+ "The only difference with the previous example is the change B(D,E) --> "
601
+ "B(E, D); however even such a little modification completely changes the "
602
+ "ordering of the hierarchy:"
472
603
msgstr ""
604
+ "與上一個範例的唯一差異是更改 B(D,E) --> B(E,D);然而,即使這樣一點點修改也會完"
605
+ "全改變層次結構的順序:"
473
606
474
607
#: ../../howto/mro.rst:307
475
608
msgid ""
@@ -518,25 +651,34 @@ msgstr ""
518
651
" ---"
519
652
520
653
#: ../../howto/mro.rst:332
654
+ #, fuzzy
521
655
msgid ""
522
656
"Notice that the class E, which is in the second level of the hierarchy, "
523
657
"precedes the class C, which is in the first level of the hierarchy, i.e. E "
524
658
"is more specialized than C, even if it is in a higher level."
525
659
msgstr ""
660
+ "請注意,位於層次結構第二層的類別 E 位於位於層次結構第一層的類別 C 之前,即 E "
661
+ "比 C 更專業,即使它位於更高的層級。"
526
662
527
663
#: ../../howto/mro.rst:336
664
+ #, fuzzy
528
665
msgid ""
529
666
"A lazy programmer can obtain the MRO directly from Python 2.2, since in this "
530
667
"case it coincides with the Python 2.3 linearization. It is enough to invoke "
531
668
"the :meth:`~type.mro` method of class A:"
532
669
msgstr ""
670
+ "懶惰的程式設計師可以直接從 Python 2.2 取得 MRO,因為在這種情況下它與 Python "
671
+ "2.3 線性化一致。呼叫 A 類別的 .mro() 方法就足夠了:"
533
672
534
673
#: ../../howto/mro.rst:345
674
+ #, fuzzy
535
675
msgid ""
536
676
"Finally, let me consider the example discussed in the first section, "
537
677
"involving a serious order disagreement. In this case, it is straightforward "
538
678
"to compute the linearizations of O, X, Y, A and B:"
539
679
msgstr ""
680
+ "最後,讓我考慮第一節中討論的例子,其中涉及嚴重的順序分歧。在這種情況下,計算 "
681
+ "O、X、Y、A 和 B 的線性化非常簡單:"
540
682
541
683
#: ../../howto/mro.rst:349
542
684
msgid ""
@@ -553,10 +695,11 @@ msgstr ""
553
695
"L[B] = B Y X O"
554
696
555
697
#: ../../howto/mro.rst:357
698
+ #, fuzzy
556
699
msgid ""
557
700
"However, it is impossible to compute the linearization for a class C that "
558
701
"inherits from A and B::"
559
- msgstr ""
702
+ msgstr "然而,不可能計算繼承自 A 和 B 的類別 C 的線性化: "
560
703
561
704
#: ../../howto/mro.rst:360
562
705
msgid ""
@@ -569,34 +712,43 @@ msgstr ""
569
712
" = C + A + B + merge(XYO, YXO)"
570
713
571
714
#: ../../howto/mro.rst:364
715
+ #, fuzzy
572
716
msgid ""
573
717
"At this point we cannot merge the lists XYO and YXO, since X is in the tail "
574
718
"of YXO whereas Y is in the tail of XYO: therefore there are no good heads "
575
719
"and the C3 algorithm stops. Python 2.3 raises an error and refuses to "
576
720
"create the class C."
577
721
msgstr ""
722
+ "此時我們無法合併清單 XYO 和 YXO,因為 X 位於 YXO 的尾部,而 Y 位於 XYO 的尾"
723
+ "部:因此沒有好的頭並且 C3 演演算法停止。Python 2.3 引發錯誤並拒絕建立 C 類"
724
+ "別。"
578
725
579
726
#: ../../howto/mro.rst:370
580
727
msgid "Bad Method Resolution Orders"
581
- msgstr ""
728
+ msgstr "不良的方法解析順序 "
582
729
583
730
#: ../../howto/mro.rst:372
731
+ #, fuzzy
584
732
msgid ""
585
733
"A MRO is *bad* when it breaks such fundamental properties as local "
586
734
"precedence ordering and monotonicity. In this section, I will show that "
587
735
"both the MRO for classic classes and the MRO for new style classes in Python "
588
736
"2.2 are bad."
589
737
msgstr ""
738
+ "當 MRO 破壞了局部優先順序和單調性等基本屬性時,它就是「壞」的。在本節中,我將"
739
+ "展示 Python 2.2 中經典類別的 MRO 和新樣式類別的 MRO 都很糟糕。"
590
740
591
741
#: ../../howto/mro.rst:377
742
+ #, fuzzy
592
743
msgid ""
593
744
"It is easier to start with the local precedence ordering. Consider the "
594
745
"following example:"
595
- msgstr ""
746
+ msgstr "從區域優先順序開始會更容易。考慮以下範例: "
596
747
597
748
#: ../../howto/mro.rst:384
749
+ #, fuzzy
598
750
msgid "with inheritance diagram"
599
- msgstr ""
751
+ msgstr "附有繼承圖 "
600
752
601
753
#: ../../howto/mro.rst:386
602
754
msgid ""
@@ -610,47 +762,71 @@ msgid ""
610
762
"\n"
611
763
" (buy eggs or spam ?)"
612
764
msgstr ""
765
+ " O\n"
766
+ " |\n"
767
+ "(buy spam) F\n"
768
+ " | \\ \n"
769
+ " | E (buy eggs)\n"
770
+ " | /\n"
771
+ " G\n"
772
+ "\n"
773
+ " (buy eggs or spam ?)"
613
774
614
775
#: ../../howto/mro.rst:399
776
+ #, fuzzy
615
777
msgid ""
616
778
"We see that class G inherits from F and E, with F *before* E: therefore we "
617
- "would expect the attribute *G.remember2buy* to be inherited by *F. "
618
- "remember2buy* and not by *E.remember2buy*: nevertheless Python 2.2 gives"
779
+ "would expect the attribute *G.remember2buy* to be inherited by "
780
+ "*F. remember2buy* and not by *E.remember2buy*: nevertheless Python 2.2 gives"
619
781
msgstr ""
782
+ "我們看到類別 G 繼承自 F 和 E,其中 F *在* E 之前:因此我們期望屬性 "
783
+ "*G.remember2buy* 由 *F.rembermer2buy* 繼承,而不是由 *E.remember2buy* 繼承:"
784
+ "儘管如此,Python 2.2給出"
620
785
621
786
#: ../../howto/mro.rst:407
787
+ #, fuzzy
622
788
msgid ""
623
789
"This is a breaking of local precedence ordering since the order in the local "
624
790
"precedence list, i.e. the list of the parents of G, is not preserved in the "
625
791
"Python 2.2 linearization of G::"
626
792
msgstr ""
793
+ "這是對局部優先順序的破壞,因為局部優先串列(即 G 的父級串列)中的順序未保留"
794
+ "在 G 的 Python 2.2 線性化中: ::"
627
795
628
796
#: ../../howto/mro.rst:411
629
797
msgid "L[G,P22]= G E F object # F *follows* E"
630
- msgstr "L[G,P22]= G E F object # F *follows * E"
798
+ msgstr "L[G,P22]= G E F object # F *跟隨 * E"
631
799
632
800
#: ../../howto/mro.rst:413
801
+ #, fuzzy
633
802
msgid ""
634
803
"One could argue that the reason why F follows E in the Python 2.2 "
635
804
"linearization is that F is less specialized than E, since F is the "
636
805
"superclass of E; nevertheless the breaking of local precedence ordering is "
637
806
"quite non-intuitive and error prone. This is particularly true since it is "
638
807
"a different from old style classes:"
639
808
msgstr ""
809
+ "有人可能會說,在 Python 2.2 線性化中 F 跟隨 E 的原因是 F 不如 E 專業化,因為 "
810
+ "F 是 E 的超類別;然而,破壞區域優先順序是相當不直觀且容易出錯的。這是特別正確"
811
+ "的,因為它與舊式類別不同:"
640
812
641
813
#: ../../howto/mro.rst:425
642
814
msgid ""
643
815
"In this case the MRO is GFEF and the local precedence ordering is preserved."
644
- msgstr ""
816
+ msgstr "在這種情況下,MRO 是 GFEF,並且保留區域優先順序。 "
645
817
646
818
#: ../../howto/mro.rst:428
819
+ #, fuzzy
647
820
msgid ""
648
821
"As a general rule, hierarchies such as the previous one should be avoided, "
649
822
"since it is unclear if F should override E or vice-versa. Python 2.3 solves "
650
823
"the ambiguity by raising an exception in the creation of class G, "
651
824
"effectively stopping the programmer from generating ambiguous hierarchies. "
652
825
"The reason for that is that the C3 algorithm fails when the merge::"
653
826
msgstr ""
827
+ "作為一般規則,應該避免像前一個這樣的層次結構,因為尚不清楚 F 是否應該覆蓋 E "
828
+ "或反之亦然。 Python 2.3 透過在建立類別 G 時引發例外來解決歧義性,有效地阻止程"
829
+ "式設計師產生歧義的層次結構。原因是 C3 演演算法在合併時失敗: ::"
654
830
655
831
#: ../../howto/mro.rst:435
656
832
msgid "merge(FO,EFO,FE)"
@@ -660,14 +836,17 @@ msgstr "merge(FO,EFO,FE)"
660
836
msgid ""
661
837
"cannot be computed, because F is in the tail of EFO and E is in the tail of "
662
838
"FE."
663
- msgstr ""
839
+ msgstr "無法計算,因為 F 在 EFO 的尾部,而 E 在 FE 的尾部。 "
664
840
665
841
#: ../../howto/mro.rst:440
842
+ #, fuzzy
666
843
msgid ""
667
844
"The real solution is to design a non-ambiguous hierarchy, i.e. to derive G "
668
845
"from E and F (the more specific first) and not from F and E; in this case "
669
846
"the MRO is GEF without any doubt."
670
847
msgstr ""
848
+ "真正的解決方案是設計一個明確的層次結構,即從 E 和 F(更具體的第一個)導出 G,"
849
+ "而不是從 F 和 E 導出;在這種情況下,MRO 毫無疑問就是 GEF。"
671
850
672
851
#: ../../howto/mro.rst:444
673
852
msgid ""
@@ -680,55 +859,77 @@ msgid ""
680
859
" G\n"
681
860
" (eggs, no doubt)"
682
861
msgstr ""
862
+ " O\n"
863
+ " |\n"
864
+ " F (spam)\n"
865
+ " / |\n"
866
+ "(eggs) E |\n"
867
+ " \\ |\n"
868
+ " G\n"
869
+ " (eggs, no doubt)"
683
870
684
871
#: ../../howto/mro.rst:456
872
+ #, fuzzy
685
873
msgid ""
686
874
"Python 2.3 forces the programmer to write good hierarchies (or, at least, "
687
875
"less error-prone ones)."
688
876
msgstr ""
877
+ "Python 2.3 迫使程式設計師寫出良好的層次結構(或至少是不容易出錯的層次結構)。"
689
878
690
879
#: ../../howto/mro.rst:459
880
+ #, fuzzy
691
881
msgid ""
692
882
"On a related note, let me point out that the Python 2.3 algorithm is smart "
693
883
"enough to recognize obvious mistakes, as the duplication of classes in the "
694
884
"list of parents:"
695
885
msgstr ""
886
+ "在相關說明中,讓我指出 Python 2.3 演演算法足夠聰明,可以識別明顯的錯誤,例如"
887
+ "父級串列中的類別重複:"
696
888
697
889
#: ../../howto/mro.rst:469
890
+ #, fuzzy
698
891
msgid ""
699
892
"Python 2.2 (both for classic classes and new style classes) in this "
700
893
"situation, would not raise any exception."
701
894
msgstr ""
895
+ "Python 2.2(無論是經典類別還是新式類別)在這種情況下都不會引發任何例外。"
702
896
703
897
#: ../../howto/mro.rst:472
898
+ #, fuzzy
704
899
msgid ""
705
900
"Finally, I would like to point out two lessons we have learned from this "
706
901
"example:"
707
- msgstr ""
902
+ msgstr "最後,我想指出我們從這個例子中學到的兩個教訓: "
708
903
709
904
#: ../../howto/mro.rst:475
905
+ #, fuzzy
710
906
msgid ""
711
907
"despite the name, the MRO determines the resolution order of attributes, not "
712
908
"only of methods;"
713
- msgstr ""
909
+ msgstr "儘管名稱如此,MRO 決定了屬性的解析順序,而不僅僅是方法的解析順序; "
714
910
715
911
#: ../../howto/mro.rst:478
912
+ #, fuzzy
716
913
msgid ""
717
914
"the default food for Pythonistas is spam ! (but you already knew that ;-)"
718
- msgstr ""
915
+ msgstr "Pythonista 的預設食物是 spam!(但你已經知道了 ;-) "
719
916
720
917
#: ../../howto/mro.rst:481
918
+ #, fuzzy
721
919
msgid ""
722
920
"Having discussed the issue of local precedence ordering, let me now consider "
723
921
"the issue of monotonicity. My goal is to show that neither the MRO for "
724
922
"classic classes nor that for Python 2.2 new style classes is monotonic."
725
923
msgstr ""
924
+ "討論完局部優先順序問題後,現在讓我考慮單調性問題。我的目標是表明經典類別的 "
925
+ "MRO 和 Python 2.2 新樣式類別的 MRO 都不是單調的。"
726
926
727
927
#: ../../howto/mro.rst:486
928
+ #, fuzzy
728
929
msgid ""
729
930
"To prove that the MRO for classic classes is non-monotonic is rather "
730
931
"trivial, it is enough to look at the diamond diagram:"
731
- msgstr ""
932
+ msgstr "要證明經典類別的 MRO 是非單調的相當簡單,看一下菱形圖就夠了: "
732
933
733
934
#: ../../howto/mro.rst:489
734
935
msgid ""
@@ -750,7 +951,7 @@ msgstr ""
750
951
751
952
#: ../../howto/mro.rst:500
752
953
msgid "One easily discerns the inconsistency::"
753
- msgstr ""
954
+ msgstr "可以很容易地辨別出這種不一致: :: "
754
955
755
956
#: ../../howto/mro.rst:502
756
957
msgid ""
@@ -759,36 +960,47 @@ msgid ""
759
960
msgstr ""
760
961
761
962
#: ../../howto/mro.rst:505
963
+ #, fuzzy
762
964
msgid ""
763
965
"On the other hand, there are no problems with the Python 2.2 and 2.3 MROs, "
764
966
"they give both::"
765
- msgstr ""
967
+ msgstr "另一方面,Python 2.2 和 2.3 MRO 沒有問題,它們同時提供: :: "
766
968
767
969
#: ../../howto/mro.rst:508
768
970
msgid "L[D] = D A B C"
769
971
msgstr "L[D] = D A B C"
770
972
771
973
#: ../../howto/mro.rst:510
974
+ #, fuzzy
772
975
msgid ""
773
976
"Guido points out in his essay [#]_ that the classic MRO is not so bad in "
774
977
"practice, since one can typically avoids diamonds for classic classes. But "
775
978
"all new style classes inherit from ``object``, therefore diamonds are "
776
979
"unavoidable and inconsistencies shows up in every multiple inheritance graph."
777
980
msgstr ""
981
+ "Guido 在他的文章 [#]_ 中指出,經典的 MRO 在實踐中並沒有那麼糟糕,因為人們通常"
982
+ "可以避免經典類別的鑽石。但是所有新樣式類別都繼承自 ``object``,因此菱形是不可"
983
+ "避免的,並且每個多重繼承圖中都會出現不一致。"
778
984
779
985
#: ../../howto/mro.rst:516
986
+ #, fuzzy
780
987
msgid ""
781
988
"The MRO of Python 2.2 makes breaking monotonicity difficult, but not "
782
989
"impossible. The following example, originally provided by Samuele Pedroni, "
783
990
"shows that the MRO of Python 2.2 is non-monotonic:"
784
991
msgstr ""
992
+ "Python 2.2 的 MRO 讓打破單調變得困難,但並非不可能。以下範例最初由 Samuele "
993
+ "Pedroni 提供,顯示 Python 2.2 的 MRO 是非單調的:"
785
994
786
995
#: ../../howto/mro.rst:530
996
+ #, fuzzy
787
997
msgid ""
788
998
"Here are the linearizations according to the C3 MRO (the reader should "
789
999
"verify these linearizations as an exercise and draw the inheritance "
790
1000
"diagram ;-) ::"
791
1001
msgstr ""
1002
+ "以下是根據 C3 MRO 的線性化(讀者應該驗證這些線性化作為練習並繪製繼承"
1003
+ "圖 ;-): ::"
792
1004
793
1005
#: ../../howto/mro.rst:534
794
1006
msgid ""
@@ -813,16 +1025,20 @@ msgstr ""
813
1025
"L[Z] = Z K1 K2 K3 D A B C E O"
814
1026
815
1027
#: ../../howto/mro.rst:544
1028
+ #, fuzzy
816
1029
msgid ""
817
1030
"Python 2.2 gives exactly the same linearizations for A, B, C, D, E, K1, K2 "
818
1031
"and K3, but a different linearization for Z::"
819
1032
msgstr ""
1033
+ "Python 2.2 為 A、B、C、D、E、K1、K2 和 K3 提供了完全相同的線性化,但為 Z 提供"
1034
+ "了不同的線性化: ::"
820
1035
821
1036
#: ../../howto/mro.rst:547
822
1037
msgid "L[Z,P22] = Z K1 K3 A K2 D B C E O"
823
1038
msgstr "L[Z,P22] = Z K1 K3 A K2 D B C E O"
824
1039
825
1040
#: ../../howto/mro.rst:549
1041
+ #, fuzzy
826
1042
msgid ""
827
1043
"It is clear that this linearization is *wrong*, since A comes before D "
828
1044
"whereas in the linearization of K3 A comes *after* D. In other words, in K3 "
@@ -834,12 +1050,19 @@ msgid ""
834
1050
"the linearization of Z K2 *follows* K3. These problems explain why the 2.2 "
835
1051
"rule has been dismissed in favor of the C3 rule."
836
1052
msgstr ""
1053
+ "很明顯,這種線性化是\\ *錯誤的*,因為 A 在 D 之前,而在 K3 的線性化中,A 在 "
1054
+ "D 之後。但在 Z 中,仍然是 K3 的子類別,A 衍生的方法覆蓋 D 衍生的方法!這是違"
1055
+ "反單調性的。此外,Z 的 Python 2.2 線性化也與局部優先權順序不一致,因為類別 Z "
1056
+ "的局部優先權串列是 [K1, K2, K3](K2 在 K3 之前),而在Z 的線性化中,K2 *跟隨"
1057
+ "* K3。這些問題解釋了為什麼 2.2 規則被 C3 規則所取代。"
837
1058
838
1059
#: ../../howto/mro.rst:561
1060
+ #, fuzzy
839
1061
msgid "The end"
840
- msgstr ""
1062
+ msgstr "結束 "
841
1063
842
1064
#: ../../howto/mro.rst:563
1065
+ #, fuzzy
843
1066
msgid ""
844
1067
"This section is for the impatient reader, who skipped all the previous "
845
1068
"sections and jumped immediately to the end. This section is for the lazy "
@@ -852,6 +1075,12 @@ msgid ""
852
1075
"the last line to play with the various examples I have discussed in this "
853
1076
"paper.::"
854
1077
msgstr ""
1078
+ "本節是為不耐煩的讀者準備的,他們跳過了前面的所有部分並立即跳到了最後。本節也"
1079
+ "適合懶惰的程式設計師,他們不想鍛鍊她/他的大腦。最後,它是為那些傲慢的程式設計"
1080
+ "師準備的,否則他/她就不會閱讀關於多重繼承層次結構中 C3 方法解析順序的論"
1081
+ "文;-) 這三個優點放在一起(而不是單獨)值得獎勵:獎品是一個簡短的Python 2.2 "
1082
+ "腳本,它允許你計算 2.3 MRO,而不會給你的大腦帶來風險。只需更改最後一行即可使"
1083
+ "用我在本文中討論的各種範例。 ::"
855
1084
856
1085
#: ../../howto/mro.rst:574
857
1086
msgid ""
@@ -940,32 +1169,41 @@ msgid ""
940
1169
msgstr ""
941
1170
942
1171
#: ../../howto/mro.rst:656
1172
+ #, fuzzy
943
1173
msgid "That's all folks,"
944
- msgstr ""
1174
+ msgstr "以上, "
945
1175
946
1176
#: ../../howto/mro.rst:658
1177
+ #, fuzzy
947
1178
msgid "enjoy !"
948
- msgstr ""
1179
+ msgstr "享受! "
949
1180
950
1181
#: ../../howto/mro.rst:662
951
1182
msgid "Resources"
952
- msgstr ""
1183
+ msgstr "資源 "
953
1184
954
1185
#: ../../howto/mro.rst:664
955
1186
msgid ""
956
1187
"The thread on python-dev started by Samuele Pedroni: https://mail.python.org/"
957
1188
"pipermail/python-dev/2002-October/029035.html"
958
1189
msgstr ""
1190
+ "Samuele Pedroni 發起的 python-dev 主題討論:https://mail.python.org/"
1191
+ "pipermail/python-dev/2002-October/029035.html"
959
1192
960
1193
#: ../../howto/mro.rst:667
961
1194
msgid ""
962
- "The paper *A Monotonic Superclass Linearization for Dylan*: https://doi."
963
- "org/ 10.1145/236337.236343"
1195
+ "The paper *A Monotonic Superclass Linearization for Dylan*: https://doi.org/ "
1196
+ "10.1145/236337.236343"
964
1197
msgstr ""
1198
+ "論文 *A Monotonic Superclass Linearization for Dylan*: https://doi.org/"
1199
+ "10.1145/236337.236343"
965
1200
966
1201
#: ../../howto/mro.rst:670
967
1202
msgid ""
968
1203
"Guido van Rossum's essay, *Unifying types and classes in Python 2.2*: "
969
1204
"https://web.archive.org/web/20140210194412/http://www.python.org/download/"
970
1205
"releases/2.2.2/descrintro"
971
1206
msgstr ""
1207
+ "Guido van Rossum 的文章,*Unifying types and classes in Python 2.2*:https://"
1208
+ "web.archive.org/web/20140210194412/http://www.python.org/download/releases/"
1209
+ "2.2.2/descrintro"
0 commit comments