@@ -1560,14 +1560,17 @@ msgstr ""
15601560
15611561#: ../../tutorial/classes.rst:738
15621562msgid "Odds and Ends"
1563- msgstr ""
1563+ msgstr "نکات متفرقه "
15641564
15651565#: ../../tutorial/classes.rst:740
15661566msgid ""
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::"
15701570msgstr ""
1571+ "گاهی اوقات داشتن یک نوع داده مشابه «رکورد» در پاسکال یا "
1572+ "«ساختار» در C مفید است، که چندین آیتم دادهی نامدار را کنار هم بستهبندی میکند. روش استاندارد "
1573+ "برای این کار استفاده از :mod:`dataclasses` است::"
15711574
15721575#: ../../tutorial/classes.rst:744
15731576msgid ""
@@ -1579,6 +1582,13 @@ msgid ""
15791582" dept: str\n"
15801583" salary: int"
15811584msgstr ""
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
15841594msgid ""
@@ -1588,6 +1598,11 @@ msgid ""
15881598">>> john.salary\n"
15891599"1000"
15901600msgstr ""
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
15931608msgid ""
@@ -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."
16001615msgstr ""
1616+ "یک قطعه کد پایتون که انتظار یک نوع دادهٔ انتزاعی خاص را دارد، اغلب "
1617+ "میتواند به جای آن، یک کلاس دریافت کند که متدهای آن نوع داده را شبیهسازی میکند. "
1618+ "برای مثال، اگر تابعی دارید که دادههایی را از یک شیء فایل قالببندی میکند، "
1619+ "میتوانید کلاسی تعریف کنید با متدهای :meth:`~io.TextIOBase.read` "
1620+ "و :meth:`~io.TextIOBase.readline` که دادهها را از یک بافر رشتهای دریافت میکنند، "
1621+ "و آن را به عنوان آرگومان به تابع ارسال کنید."
16011622
16021623#: ../../tutorial/classes.rst:772
16031624msgid ""
@@ -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."
16081629msgstr ""
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
16111636msgid "Iterators"
1612- msgstr ""
1637+ msgstr "تکرارگرها "
16131638
16141639#: ../../tutorial/classes.rst:784
16151640msgid ""
16161641"By now you have probably noticed that most container objects can be looped "
16171642"over using a :keyword:`for` statement::"
16181643msgstr ""
1644+ "تا اینجا احتمالاً متوجه شدهاید که میتوان روی بیشتر اشیاء ظرف با استفاده از "
1645+ "دستور :keyword:`for` حلقه زد::"
16191646
16201647#: ../../tutorial/classes.rst:787
16211648msgid ""
@@ -1630,6 +1657,16 @@ msgid ""
16301657"for line in open(\" myfile.txt\" ):\n"
16311658" print(line, end='')"
16321659msgstr ""
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
16351672msgid ""
@@ -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::"
16451682msgstr ""
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
16481694msgid ""
@@ -1662,6 +1708,21 @@ msgid ""
16621708" next(it)\n"
16631709"StopIteration"
16641710msgstr ""
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
16671728msgid ""
@@ -1671,6 +1732,11 @@ msgid ""
16711732"the class defines :meth:`!__next__`, then :meth:`!__iter__` can just return "
16721733"``self``::"
16731734msgstr ""
1735+ "حالا که با سازوکار پشت پروتکل تکرارگر آشنا شدید، اضافه کردن "
1736+ "رفتار تکرارگر به کلاسهایتان آسان است. یک متد :meth:`~container.__iter__` تعریف کنید "
1737+ "که یک شیء با متد :meth:`~iterator.__next__` برمیگرداند. اگر "
1738+ "کلاس :meth:`!__next__` را تعریف کرده باشد، آنگاه :meth:`!__iter__` میتواند فقط "
1739+ "``self`` را برگرداند::"
16741740
16751741#: ../../tutorial/classes.rst:828
16761742msgid ""
@@ -1689,6 +1755,20 @@ msgid ""
16891755" self.index = self.index - 1\n"
16901756" return self.data[self.index]"
16911757msgstr ""
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
16941774msgid ""
@@ -1703,10 +1783,20 @@ msgid ""
17031783"p\n"
17041784"s"
17051785msgstr ""
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
17081798msgid "Generators"
1709- msgstr ""
1799+ msgstr "تولیدکنندهها "
17101800
17111801#: ../../tutorial/classes.rst:862
17121802msgid ""
@@ -1718,12 +1808,12 @@ msgid ""
17181808"An example shows that generators can be trivially easy to create::"
17191809msgstr ""
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
17291819msgid ""
@@ -1760,11 +1850,11 @@ msgid ""
17601850"compact is that the :meth:`~iterator.__iter__` "
17611851"and :meth:`~generator.__next__` methods are created automatically."
17621852msgstr ""
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
17701860msgid ""
@@ -1773,10 +1863,10 @@ msgid ""
17731863"and much more clear than an approach using instance variables like "
17741864"``self.index`` and ``self.data``."
17751865msgstr ""
1776- "یکی دیگر از ویژگی های کلیدی این است که متغیرهای محلی و وضعیت اجرا به طور "
1777- "خودکار بین فراخوانی ها ذخیره می شوند . این امر نوشتن تابع را آسان تر و خیلی "
1778- "واضح تر از رویکردی که از متغیرهای نمونه ای مانند ``self.index`` و "
1779- "``self.data`` استفاده می کند ، کرده است."
1866+ "یکی دیگر از ویژگیهای کلیدی این است که متغیرهای محلی و وضعیت اجرا بهطور "
1867+ "خودکار بین فراخوانیها ذخیره میشوند . این امر نوشتن تابع را آسانتر و خیلی "
1868+ "واضحتر از رویکردی که از متغیرهای نمونهای مانند ``self.index`` و "
1869+ "``self.data`` استفاده میکند ، کرده است."
17801870
17811871#: ../../tutorial/classes.rst:893
17821872msgid ""
@@ -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."
17871877msgstr ""
1788- "علاوه بر ایجاد خودکار متدها و ذخیره سازی وضعیت برنامه، زمانی که جنراتورها "
1789- "خاتمه می یابند، به طور خودکار :exc:`StopIteration` را ایجاد می کنند . این "
1790- "ویژگی ها به صورت ترکیبی، ساختن تکرارگرها را به همان سادگی نوشتن یک تابع عادی "
1791- "امکان پذیر می سازند ."
1878+ "علاوه بر ایجاد خودکار متدها و ذخیره سازی وضعیت برنامه، زمانی که تولیدکنندهها "
1879+ "خاتمه مییابند، بهطور خودکار :exc:`StopIteration` را ایجاد میکنند . این "
1880+ "ویژگیها به صورت ترکیبی، ساختن تکرارگرها را به همان سادگی نوشتن یک تابع عادی "
1881+ "امکان پذیر میسازند ."
17921882
17931883#: ../../tutorial/classes.rst:902
17941884msgid "Generator Expressions"
1795- msgstr ""
1885+ msgstr "عبارات تولیدکننده "
17961886
17971887#: ../../tutorial/classes.rst:904
17981888msgid ""
@@ -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."
18051895msgstr ""
1896+ "برخی از تولیدکنندههای ساده را میتوان بهصورت مختصر به عنوان عبارت کدنویسی کرد، با استفاده از یک نحو "
1897+ "مشابه درکلیستها اما با پرانتز به جای کروشهی "
1898+ "باز. این عبارتها برای شرایطی طراحی شدهاند که تولیدکننده "
1899+ "بلافاصله توسط یک تابع محاطشونده استفاده میشود. عبارتهای تولیدکننده فشردهتر "
1900+ "هستند اما نسبت به تعاریف کامل تولیدکننده، انعطافپذیری کمتری دارند و معمولاً "
1901+ "نسبت به درکلیستهای معادل، با حافظه سازگارتر هستند."
18061902
18071903#: ../../tutorial/classes.rst:911
18081904msgid "Examples::"
1809- msgstr ""
1905+ msgstr "مثالها "
18101906
18111907#: ../../tutorial/classes.rst:913
18121908msgid ""
@@ -1827,10 +1923,26 @@ msgid ""
18271923">>> list(data[i] for i in range(len(data)-1, -1, -1))\n"
18281924"['f', 'l', 'o', 'g']"
18291925msgstr ""
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
18321944msgid "Footnotes"
1833- msgstr ""
1945+ msgstr "پاورقیها "
18341946
18351947#: ../../tutorial/classes.rst:933
18361948msgid ""
@@ -1841,19 +1953,25 @@ msgid ""
18411953"namespace implementation, and should be restricted to things like post-"
18421954"mortem debuggers."
18431955msgstr ""
1956+ "به جز یک مورد. اشیاء ماژول یک ویژگی مخفی فقطخواندنی دارند "
1957+ "به نام :attr:`~object.__dict__` که دیکشنری مورد استفاده برای "
1958+ "پیادهسازی فضای نام ماژول را برمیگرداند؛ نام ``__dict__`` یک ویژگی است اما "
1959+ "یک نام سراسری نیست. بدیهی است که استفاده از این ویژگی، انتزاع "
1960+ "پیادهسازی فضای نام را نقض میکند و باید به مواردی مانند "
1961+ "اشکالزدای پسازمرگ محدود شود."
18441962
18451963#: ../../tutorial/classes.rst:343
18461964msgid "object"
1847- msgstr ""
1965+ msgstr "شیء "
18481966
18491967#: ../../tutorial/classes.rst:343
18501968msgid "method"
1851- msgstr ""
1969+ msgstr "متد "
18521970
18531971#: ../../tutorial/classes.rst:679
18541972msgid "name"
1855- msgstr ""
1973+ msgstr "اسم "
18561974
18571975#: ../../tutorial/classes.rst:679
18581976msgid "mangling"
1859- msgstr ""
1977+ msgstr "دستکاری نام "
0 commit comments