Skip to content

Commit d718df8

Browse files
committed
Completing the translation of the classes file
1 parent 3dd26eb commit d718df8

1 file changed

Lines changed: 147 additions & 29 deletions

File tree

tutorial/classes.po

Lines changed: 147 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,14 +1560,17 @@ msgstr ""
15601560

15611561
#: ../../tutorial/classes.rst:738
15621562
msgid "Odds and Ends"
1563-
msgstr ""
1563+
msgstr "نکات متفرقه"
15641564

15651565
#: ../../tutorial/classes.rst:740
15661566
msgid ""
15671567
"Sometimes it is useful to have a data type similar to the Pascal \"record\" "
15681568
"or C \"struct\", bundling together a few named data items. The idiomatic "
15691569
"approach is to use :mod:`dataclasses` for this purpose::"
15701570
msgstr ""
1571+
"گاهی اوقات داشتن یک نوع داده مشابه «رکورد» در پاسکال یا "
1572+
"«ساختار» در C مفید است، که چندین آیتم داده‌ی نام‌دار را کنار هم بسته‌بندی می‌کند. روش استاندارد "
1573+
"برای این کار استفاده از :mod:`dataclasses` است::"
15711574

15721575
#: ../../tutorial/classes.rst:744
15731576
msgid ""
@@ -1579,6 +1582,13 @@ msgid ""
15791582
" dept: str\n"
15801583
" salary: int"
15811584
msgstr ""
1585+
"from dataclasses import dataclass\n"
1586+
"\n"
1587+
"@dataclass\n"
1588+
"class Employee:\n"
1589+
" name: str\n"
1590+
" dept: str\n"
1591+
" salary: int"
15821592

15831593
#: ../../tutorial/classes.rst:754
15841594
msgid ""
@@ -1588,6 +1598,11 @@ msgid ""
15881598
">>> john.salary\n"
15891599
"1000"
15901600
msgstr ""
1601+
">>> john = Employee('john', 'computer lab', 1000)\n"
1602+
">>> john.dept\n"
1603+
"'computer lab'\n"
1604+
">>> john.salary\n"
1605+
"1000"
15911606

15921607
#: ../../tutorial/classes.rst:760
15931608
msgid ""
@@ -1598,6 +1613,12 @@ msgid ""
15981613
"and :meth:`~io.TextIOBase.readline` that get the data from a string buffer "
15991614
"instead, and pass it as an argument."
16001615
msgstr ""
1616+
"یک قطعه کد پایتون که انتظار یک نوع دادهٔ انتزاعی خاص را دارد، اغلب "
1617+
"می‌تواند به جای آن، یک کلاس دریافت کند که متدهای آن نوع داده را شبیه‌سازی می‌کند. "
1618+
"برای مثال، اگر تابعی دارید که داده‌هایی را از یک شیء فایل قالب‌بندی می‌کند، "
1619+
"می‌توانید کلاسی تعریف کنید با متدهای :meth:`~io.TextIOBase.read` "
1620+
"و :meth:`~io.TextIOBase.readline` که داده‌ها را از یک بافر رشته‌ای دریافت می‌کنند، "
1621+
"و آن را به عنوان آرگومان به تابع ارسال کنید."
16011622

16021623
#: ../../tutorial/classes.rst:772
16031624
msgid ""
@@ -1606,16 +1627,22 @@ msgid ""
16061627
"method :meth:`!m`, and :attr:`m.__func__ <method.__func__>` is "
16071628
"the :ref:`function object <user-defined-funcs>` corresponding to the method."
16081629
msgstr ""
1630+
":ref:`اشیاء متد نمونه <instance-methods>` نیز ویژگی‌هایی دارند: "
1631+
":attr:`m.__self__ <method.__self__>` شیء نمونه‌ای است که متد :meth:`!m` "
1632+
"به آن تعلق دارد، و :attr:`m.__func__ <method.__func__>` همان "
1633+
":ref:`شیء تابع <user-defined-funcs>` متناظر با آن متد است."
16091634

16101635
#: ../../tutorial/classes.rst:782
16111636
msgid "Iterators"
1612-
msgstr ""
1637+
msgstr "تکرارگرها"
16131638

16141639
#: ../../tutorial/classes.rst:784
16151640
msgid ""
16161641
"By now you have probably noticed that most container objects can be looped "
16171642
"over using a :keyword:`for` statement::"
16181643
msgstr ""
1644+
"تا اینجا احتمالاً متوجه شده‌اید که می‌توان روی بیشتر اشیاء ظرف با استفاده از "
1645+
"دستور :keyword:`for` حلقه زد::"
16191646

16201647
#: ../../tutorial/classes.rst:787
16211648
msgid ""
@@ -1630,6 +1657,16 @@ msgid ""
16301657
"for line in open(\"myfile.txt\"):\n"
16311658
" print(line, end='')"
16321659
msgstr ""
1660+
"for element in [1, 2, 3]:\n"
1661+
" print(element)\n"
1662+
"for element in (1, 2, 3):\n"
1663+
" print(element)\n"
1664+
"for key in {'one':1, 'two':2}:\n"
1665+
" print(key)\n"
1666+
"for char in \"123\":\n"
1667+
" print(char)\n"
1668+
"for line in open(\"myfile.txt\"):\n"
1669+
" print(line, end='')"
16331670

16341671
#: ../../tutorial/classes.rst:798
16351672
msgid ""
@@ -1643,6 +1680,15 @@ msgid ""
16431680
"to terminate. You can call the :meth:`~iterator.__next__` method using "
16441681
"the :func:`next` built-in function; this example shows how it all works::"
16451682
msgstr ""
1683+
"این سبک دسترسی واضح، مختصر و راحت است. استفاده از "
1684+
"تکرارگرها در همه‌جا نفوذ کرده و پایتون را یکپارچه می‌کنند. در پشت صحنه، "
1685+
"دستور :keyword:`for` تابع :func:`iter` را روی شیء ظرف فراخوانی می‌کند. "
1686+
"این تابع یک شیء تکرارگر برمی‌گرداند که "
1687+
"متد :meth:`~iterator.__next__` را تعریف می‌کند که به المان‌ها در ظرف "
1688+
"یکی یکی دسترسی پیدا می‌کند. وقتی المان‌ها تمام شوند، :meth:`~iterator.__next__` "
1689+
"یک استثنای :exc:`StopIteration` ایجاد می‌کند که به حلقه‌ی :keyword:`!for` می‌گوید "
1690+
"پایان یابد. می‌توانید متد :meth:`~iterator.__next__` را با استفاده از "
1691+
"تابع داخلی :func:`next` فراخوانی کنید؛ این مثال نشان می‌دهد که چگونه همه‌چیز کار می‌کند::"
16461692

16471693
#: ../../tutorial/classes.rst:807
16481694
msgid ""
@@ -1662,6 +1708,21 @@ msgid ""
16621708
" next(it)\n"
16631709
"StopIteration"
16641710
msgstr ""
1711+
">>> s = 'abc'\n"
1712+
">>> it = iter(s)\n"
1713+
">>> it\n"
1714+
"<str_iterator object at 0x10c90e650>\n"
1715+
">>> next(it)\n"
1716+
"'a'\n"
1717+
">>> next(it)\n"
1718+
"'b'\n"
1719+
">>> next(it)\n"
1720+
"'c'\n"
1721+
">>> next(it)\n"
1722+
"Traceback (most recent call last):\n"
1723+
" File \"<stdin>\", line 1, in <module>\n"
1724+
" next(it)\n"
1725+
"StopIteration"
16651726

16661727
#: ../../tutorial/classes.rst:823
16671728
msgid ""
@@ -1671,6 +1732,11 @@ msgid ""
16711732
"the class defines :meth:`!__next__`, then :meth:`!__iter__` can just return "
16721733
"``self``::"
16731734
msgstr ""
1735+
"حالا که با سازوکار پشت پروتکل تکرارگر آشنا شدید، اضافه کردن "
1736+
"رفتار تکرارگر به کلاس‌هایتان آسان است. یک متد :meth:`~container.__iter__` تعریف کنید "
1737+
"که یک شیء با متد :meth:`~iterator.__next__` برمی‌گرداند. اگر "
1738+
"کلاس :meth:`!__next__` را تعریف کرده باشد، آنگاه :meth:`!__iter__` می‌تواند فقط "
1739+
"``self`` را برگرداند::"
16741740

16751741
#: ../../tutorial/classes.rst:828
16761742
msgid ""
@@ -1689,6 +1755,20 @@ msgid ""
16891755
" self.index = self.index - 1\n"
16901756
" return self.data[self.index]"
16911757
msgstr ""
1758+
"class Reverse:\n"
1759+
" \"\"\"Iterator for looping over a sequence backwards.\"\"\"\n"
1760+
" def __init__(self, data):\n"
1761+
" self.data = data\n"
1762+
" self.index = len(data)\n"
1763+
"\n"
1764+
" def __iter__(self):\n"
1765+
" return self\n"
1766+
"\n"
1767+
" def __next__(self):\n"
1768+
" if self.index == 0:\n"
1769+
" raise StopIteration\n"
1770+
" self.index = self.index - 1\n"
1771+
" return self.data[self.index]"
16921772

16931773
#: ../../tutorial/classes.rst:845
16941774
msgid ""
@@ -1703,10 +1783,20 @@ msgid ""
17031783
"p\n"
17041784
"s"
17051785
msgstr ""
1786+
">>> rev = Reverse('spam')\n"
1787+
">>> iter(rev)\n"
1788+
"<__main__.Reverse object at 0x00A1DB50>\n"
1789+
">>> for char in rev:\n"
1790+
"... print(char)\n"
1791+
"...\n"
1792+
"m\n"
1793+
"a\n"
1794+
"p\n"
1795+
"s"
17061796

17071797
#: ../../tutorial/classes.rst:860
17081798
msgid "Generators"
1709-
msgstr ""
1799+
msgstr "تولیدکننده‌ها"
17101800

17111801
#: ../../tutorial/classes.rst:862
17121802
msgid ""
@@ -1718,12 +1808,12 @@ msgid ""
17181808
"An example shows that generators can be trivially easy to create::"
17191809
msgstr ""
17201810
":term:`Generators <generator>` یک ابزار ساده و قدرتمند برای ایجاد "
1721-
"اینتراتورها هستند. آنها مانند توابع عادی نوشته می شوند اما هر زمان که می "
1722-
"خواهند داده ای را بازگردانند از دستور :keyword:`yield` استفاده می کنند. هر "
1723-
"بار که :func:`next` بر روی آن فراخوانی می شود، مولد از جایی که متوقف شده "
1724-
"ادامه می یابد (تمام مقادیر داده ها و اینکه آخرین دستور اجرا شده چه بوده را "
1725-
"به خاطر می آورد). یک مثال نشان می دهد که ایجاد مولدها می تواند به طرز "
1726-
"باورنکردنی ساده باشد::"
1811+
"اینتراتور‌ها هستند. آن‌ها مانند توابع عادی نوشته می‌شوند اما هر زمان که می‌خواهند "
1812+
"داده‌ای را بازگردانند از دستور :keyword:`yield` استفاده می‌کنند. هر "
1813+
"بار که :func:`next` بر روی آن فراخوانی می‌شود، مولد از جایی که متوقف شده "
1814+
"ادامه می‌یابد (تمام مقادیر داده‌ها و اینکه آخرین دستور اجرا شده چه بوده را "
1815+
"به خاطر می‌آورد). یک مثال نشان می‌دهد که ایجاد مولد‌ها می‌تواند به طرز "
1816+
"باور‌نکردنی ساده باشد::"
17271817

17281818
#: ../../tutorial/classes.rst:869
17291819
msgid ""
@@ -1760,11 +1850,11 @@ msgid ""
17601850
"compact is that the :meth:`~iterator.__iter__` "
17611851
"and :meth:`~generator.__next__` methods are created automatically."
17621852
msgstr ""
1763-
"هر چیزی که با تولیدکننده ها (generators) قابل انجام است، می تواند با استفاده "
1764-
"از تکرارگرهای مبتنی بر کلاس نیز انجام شود، همانطور که در بخش قبلی توضیح داده "
1765-
"شد. آنچه تولیدکننده ها را فشرده می کند، این است که روش "
1766-
"های :meth:`~iterator.__iter__` و :meth:`~generator.__next__` به طور خودکار "
1767-
"ایجاد می شوند."
1853+
"هر چیزی که با تولیدکننده‌ها قابل انجام است، می‌تواند با استفاده "
1854+
"از تکرارگر‌های مبتنی بر کلاس نیز انجام شود، همانطور که در بخش قبلی توضیح داده "
1855+
"شد. آنچه تولیدکننده‌ها را فشرده می‌کند، این است که روش‌های "
1856+
":meth:`~iterator.__iter__` و :meth:`~generator.__next__` به‌طور خودکار "
1857+
"ایجاد می‌شوند."
17681858

17691859
#: ../../tutorial/classes.rst:888
17701860
msgid ""
@@ -1773,10 +1863,10 @@ msgid ""
17731863
"and much more clear than an approach using instance variables like "
17741864
"``self.index`` and ``self.data``."
17751865
msgstr ""
1776-
"یکی دیگر از ویژگی های کلیدی این است که متغیرهای محلی و وضعیت اجرا به طور "
1777-
"خودکار بین فراخوانی ها ذخیره می شوند. این امر نوشتن تابع را آسان تر و خیلی "
1778-
"واضح تر از رویکردی که از متغیرهای نمونه ای مانند ``self.index`` و "
1779-
"``self.data`` استفاده می کند، کرده است."
1866+
"یکی دیگر از ویژگی‌های کلیدی این است که متغیر‌های محلی و وضعیت اجرا به‌طور "
1867+
"خودکار بین فراخوانی‌ها ذخیره می‌شوند. این امر نوشتن تابع را آسان‌تر و خیلی "
1868+
"واضح‌تر از رویکردی که از متغیر‌های نمونه‌ای مانند ``self.index`` و "
1869+
"``self.data`` استفاده می‌کند، کرده است."
17801870

17811871
#: ../../tutorial/classes.rst:893
17821872
msgid ""
@@ -1785,14 +1875,14 @@ msgid ""
17851875
"combination, these features make it easy to create iterators with no more "
17861876
"effort than writing a regular function."
17871877
msgstr ""
1788-
"علاوه بر ایجاد خودکار متدها و ذخیره سازی وضعیت برنامه، زمانی که جنراتورها "
1789-
"خاتمه می یابند، به طور خودکار :exc:`StopIteration` را ایجاد می کنند. این "
1790-
"ویژگی ها به صورت ترکیبی، ساختن تکرارگرها را به همان سادگی نوشتن یک تابع عادی "
1791-
"امکان پذیر می سازند."
1878+
"علاوه بر ایجاد خودکار متد‌ها و ذخیره سازی وضعیت برنامه، زمانی که تولیدکننده‌ها "
1879+
"خاتمه می‌یابند، به‌طور خودکار :exc:`StopIteration` را ایجاد می‌کنند. این "
1880+
"ویژگی‌ها به صورت ترکیبی، ساختن تکرارگر‌ها را به همان سادگی نوشتن یک تابع عادی "
1881+
"امکان پذیر می‌سازند."
17921882

17931883
#: ../../tutorial/classes.rst:902
17941884
msgid "Generator Expressions"
1795-
msgstr ""
1885+
msgstr "عبارات تولیدکننده"
17961886

17971887
#: ../../tutorial/classes.rst:904
17981888
msgid ""
@@ -1803,10 +1893,16 @@ msgid ""
18031893
"compact but less versatile than full generator definitions and tend to be "
18041894
"more memory friendly than equivalent list comprehensions."
18051895
msgstr ""
1896+
"برخی از تولیدکننده‌های ساده را می‌توان به‌صورت مختصر به عنوان عبارت کدنویسی کرد، با استفاده از یک نحو "
1897+
"مشابه درک‌لیست‌ها اما با پرانتز به جای کروشه‌ی "
1898+
"باز. این عبارت‌ها برای شرایطی طراحی شده‌اند که تولیدکننده "
1899+
"بلافاصله توسط یک تابع محاط‌شونده استفاده می‌شود. عبارت‌های تولیدکننده فشرده‌تر "
1900+
"هستند اما نسبت به تعاریف کامل تولیدکننده، انعطاف‌پذیری کمتری دارند و معمولاً "
1901+
"نسبت به درک‌لیست‌های معادل، با حافظه سازگارتر هستند."
18061902

18071903
#: ../../tutorial/classes.rst:911
18081904
msgid "Examples::"
1809-
msgstr ""
1905+
msgstr "مثال‌ها"
18101906

18111907
#: ../../tutorial/classes.rst:913
18121908
msgid ""
@@ -1827,10 +1923,26 @@ msgid ""
18271923
">>> list(data[i] for i in range(len(data)-1, -1, -1))\n"
18281924
"['f', 'l', 'o', 'g']"
18291925
msgstr ""
1926+
">>> sum(i*i for i in range(10)) # sum of squares\n"
1927+
"285\n"
1928+
"\n"
1929+
">>> xvec = [10, 20, 30]\n"
1930+
">>> yvec = [7, 5, 3]\n"
1931+
">>> sum(x*y for x,y in zip(xvec, yvec)) # dot product\n"
1932+
"260\n"
1933+
"\n"
1934+
">>> unique_words = set(word for line in page for word in line.split())\n"
1935+
"\n"
1936+
">>> valedictorian = max((student.gpa, student.name) for student in "
1937+
"graduates)\n"
1938+
"\n"
1939+
">>> data = 'golf'\n"
1940+
">>> list(data[i] for i in range(len(data)-1, -1, -1))\n"
1941+
"['f', 'l', 'o', 'g']"
18301942

18311943
#: ../../tutorial/classes.rst:932
18321944
msgid "Footnotes"
1833-
msgstr ""
1945+
msgstr "پا‌ورقی‌ها"
18341946

18351947
#: ../../tutorial/classes.rst:933
18361948
msgid ""
@@ -1841,19 +1953,25 @@ msgid ""
18411953
"namespace implementation, and should be restricted to things like post-"
18421954
"mortem debuggers."
18431955
msgstr ""
1956+
"به جز یک مورد. اشیاء ماژول یک ویژگی مخفی فقط‌خواندنی دارند "
1957+
"به نام :attr:`~object.__dict__` که دیکشنری مورد استفاده برای "
1958+
"پیاده‌سازی فضای نام ماژول را برمی‌گرداند؛ نام ``__dict__`` یک ویژگی است اما "
1959+
"یک نام سراسری نیست. بدیهی است که استفاده از این ویژگی، انتزاع "
1960+
"پیاده‌سازی فضای نام را نقض می‌کند و باید به مواردی مانند "
1961+
"اشکال‌زدای پس‌ازمرگ محدود شود."
18441962

18451963
#: ../../tutorial/classes.rst:343
18461964
msgid "object"
1847-
msgstr ""
1965+
msgstr "شیء"
18481966

18491967
#: ../../tutorial/classes.rst:343
18501968
msgid "method"
1851-
msgstr ""
1969+
msgstr "متد"
18521970

18531971
#: ../../tutorial/classes.rst:679
18541972
msgid "name"
1855-
msgstr ""
1973+
msgstr "اسم"
18561974

18571975
#: ../../tutorial/classes.rst:679
18581976
msgid "mangling"
1859-
msgstr ""
1977+
msgstr "دستکاری نام"

0 commit comments

Comments
 (0)