@@ -823,6 +823,24 @@ msgid ""
823823">>> e.name # unique to e\n"
824824"'Buddy'"
825825msgstr ""
826+ "class Pies:\n"
827+ "\n"
828+ " gatunek = 'pies' # zmienna klasowa współdzielona przez wszystkie "
829+ "instancje\n"
830+ "\n"
831+ " def __init__(self, imie):\n"
832+ " self.imie = imie # zmienna instancji unikalna dla każdej instancji\n"
833+ "\n"
834+ ">>> d = Pies('Fido')\n"
835+ ">>> e = Pies('Zito')\n"
836+ ">>> d.gatunek # współdzielona przez wszystkie psy\n"
837+ "'pies'\n"
838+ ">>> e.gatunek # współdzielona przez wszystkie psy\n"
839+ "'pies'\n"
840+ ">>> d.imie # unikalna dla d\n"
841+ "'Fido'\n"
842+ ">>> e.imie # unikalna dla e\n"
843+ "'Zito'"
826844
827845msgid ""
828846"As discussed in :ref:`tut-object`, shared data can have possibly surprising "
@@ -831,6 +849,11 @@ msgid ""
831849"not be used as a class variable because just a single list would be shared "
832850"by all *Dog* instances::"
833851msgstr ""
852+ "Jak omówiono w :ref:`tut-object`, współdzielone dane mogą mieć zaskakujące "
853+ "efekty z udziałem :term:`mutable` obiektów takich jak listy i słownik. Na "
854+ "przykład, lista *sztuczki* w poniższym kodzie nie powinna być używana jako "
855+ "zmienna klasowa, ponieważ tylko jedna lista byłaby współdzielona przez "
856+ "wszystkie instancje *Pies*::"
834857
835858msgid ""
836859"class Dog:\n"
@@ -890,6 +913,23 @@ msgid ""
890913">>> e.tricks\n"
891914"['play dead']"
892915msgstr ""
916+ "class Pies:\n"
917+ "\n"
918+ "def __init__(self, imie):\n"
919+ "self.imie = imie\n"
920+ "self.sztuczki = [] # tworzy nową pustą listę dla każdego psa\n"
921+ "\n"
922+ "def dodaj_sztuczke(self, sztuczka):\n"
923+ "self.sztuczki.append(sztuczka)\n"
924+ "\n"
925+ ">>> d = Pies('Fido')\n"
926+ ">>> e = Pies('Zito')\n"
927+ ">>> d.dodaj_sztuczke('przewróć się')\n"
928+ ">>> e.dodaj_sztuczke('udawaj martwego')\n"
929+ ">>> d.sztuczki\n"
930+ "['przewróć się']\n"
931+ ">>> e.sztuczki\n"
932+ "['udawaj martwego']"
893933
894934msgid "Random Remarks"
895935msgstr "Uwagi losowe"
@@ -914,6 +954,17 @@ msgid ""
914954">>> print(w2.purpose, w2.region)\n"
915955"storage east"
916956msgstr ""
957+ ">>> class Magazyn:\n"
958+ "... cel = 'przechowywanie'\n"
959+ "... region = 'zachód'\n"
960+ "...\n"
961+ ">>> m1 = Magazyn()\n"
962+ ">>> print(m1.cel, m1.region)\n"
963+ "przechowywanie zachód\n"
964+ ">>> m2 = Magazyn()\n"
965+ ">>> m2.region = 'wschód'\n"
966+ ">>> print(m2.cel, m2.region)\n"
967+ "przechowywanie wschód"
917968
918969msgid ""
919970"Data attributes may be referenced by methods as well as by ordinary users "
@@ -967,6 +1018,10 @@ msgid ""
9671018"textually enclosed in the class definition: assigning a function object to a "
9681019"local variable in the class is also ok. For example::"
9691020msgstr ""
1021+ "Każdy obiekt funkcja będący klasą atrybut definiuje metodę dla instancji tej "
1022+ "klasy. Nie jest konieczne, aby definicja funkcja była tekstowo zawarta w "
1023+ "definicja klasy: przypisanie obiektu funkcja do zmiennej lokalnej w klasie "
1024+ "jest również w porządku. Na przykład::"
9701025
9711026msgid ""
9721027"# Function defined outside the class\n"
@@ -999,6 +1054,10 @@ msgid ""
9991054"instances of :class:`!C` --- ``h`` being exactly equivalent to ``g``. Note "
10001055"that this practice usually only serves to confuse the reader of a program."
10011056msgstr ""
1057+ "Teraz ``f``, ``g`` i ``h`` są wszystkie atrybut klasy :class:`!C`, które "
1058+ "odnoszą się do obiektów funkcja, a w konsekwencji wszystkie są metodami "
1059+ "instancji :class:`!C` --- ``h`` jest dokładnie równoważne ``g``. Zauważ, że "
1060+ "ta praktyka zwykle służy jedynie do zmylenia czytelnika programu."
10021061
10031062msgid ""
10041063"Methods may call other methods by using method attributes of the ``self`` "
@@ -1041,11 +1100,23 @@ msgid ""
10411100"itself defined in this global scope, and in the next section we'll find some "
10421101"good reasons why a method would want to reference its own class."
10431102msgstr ""
1103+ "Metody mogą odwoływać się do nazw globalnych w taki sam sposób jak zwykłe "
1104+ "funkcje. Zakres globalny powiązany z metodą to moduł zawierający jej "
1105+ "definicję. (Klasa nigdy nie jest używana jako zakres globalny.) Podczas gdy "
1106+ "rzadko można napotkać dobry powód do używania danych globalnych w metodzie, "
1107+ "istnieje wiele uzasadnionych zastosowań zakresu globalnego: po pierwsze, "
1108+ "funkcja i moduł importowane do zakresu globalnego mogą być używane przez "
1109+ "metody, a także funkcja i klasy w nim zdefiniowane. Zazwyczaj klasa "
1110+ "zawierająca metodę sama jest zdefiniowana w tym globalnym zakresie, a w "
1111+ "następnej sekcji znajdziemy kilka dobrych powodów, dla których metoda "
1112+ "chciałaby odwoływać się do własnej klasy."
10441113
10451114msgid ""
10461115"Each value is an object, and therefore has a *class* (also called its "
10471116"*type*). It is stored as ``object.__class__``."
10481117msgstr ""
1118+ "Każda wartość jest obiektem, a zatem ma *klasę* (zwaną również *typem*). "
1119+ "Jest ona przechowywana jako ``object.__class__``."
10491120
10501121msgid "Inheritance"
10511122msgstr "Dziedziczenie"
@@ -1079,6 +1150,10 @@ msgid ""
10791150"class name, other arbitrary expressions are also allowed. This can be "
10801151"useful, for example, when the base class is defined in another module::"
10811152msgstr ""
1153+ "Nazwa :class:`!BaseClassName` musi być zdefiniowana w przestrzeni nazw "
1154+ "dostępnej z zakresu zawierającego pochodną definicja klasy. Zamiast nazwy "
1155+ "klasa bazowa dozwolone są również inne dowolne wyrażenia. Może to być "
1156+ "przydatne, na przykład, gdy klasa bazowa jest zdefiniowany w innym moduł::"
10821157
10831158msgid "class DerivedClassName(modname.BaseClassName):"
10841159msgstr "class DerivedClassName(modname.BaseClassName):"
@@ -1125,13 +1200,20 @@ msgid ""
11251200"will be ``True`` only if ``obj.__class__`` is :class:`int` or some class "
11261201"derived from :class:`int`."
11271202msgstr ""
1203+ "Użyj :func:`isinstance` do sprawdzenia typu instancji: ``isinstance(obj, "
1204+ "int)`` będzie ``True`` tylko wtedy, gdy ``obj.__class__`` jest :class:`int` "
1205+ "lub jakąś klasą pochodną od :class:`int`."
11281206
11291207msgid ""
11301208"Use :func:`issubclass` to check class inheritance: ``issubclass(bool, int)`` "
11311209"is ``True`` since :class:`bool` is a subclass of :class:`int`. However, "
11321210"``issubclass(float, int)`` is ``False`` since :class:`float` is not a "
11331211"subclass of :class:`int`."
11341212msgstr ""
1213+ "Użyj :func:`issubclass` do sprawdzenia dziedziczenia klas: "
1214+ "``issubclass(bool, int)`` jest ``True``, ponieważ :class:`bool` jest "
1215+ "podklasa z :class:`int`. Jednak ``issubclass(float, int)`` jest ``False``, "
1216+ "ponieważ :class:`float` nie jest podklasa z :class:`int`."
11351217
11361218msgid "Multiple Inheritance"
11371219msgstr "Dziedziczenie wielokrotne"
@@ -1196,6 +1278,20 @@ msgid ""
11961278"properties make it possible to design reliable and extensible classes with "
11971279"multiple inheritance. For more detail, see :ref:`python_2.3_mro`."
11981280msgstr ""
1281+ "Dynamiczne porządkowanie jest konieczne, ponieważ wszystkie przypadki "
1282+ "wielokrotnego dziedziczenia wykazują jedną lub więcej relacji diamentowych "
1283+ "(w których co najmniej jedna z klas nadrzędnych może być dostępna poprzez "
1284+ "wiele ścieżek z najniższej klasy). Na przykład, wszystkie klasy dziedziczą "
1285+ "z :class:`object`, więc każdy przypadek wielokrotnego dziedziczenia zapewnia "
1286+ "więcej niż jedną ścieżkę dostępu do :class:`object`. Aby zapobiec "
1287+ "wielokrotnemu dostępowi do klas bazowych, algorytm dynamiczny linearyzuje "
1288+ "kolejność wyszukiwania w sposób, który zachowuje kolejność od lewej do "
1289+ "prawej określoną w każdej klasie, która wywołuje każdego rodzica tylko raz i "
1290+ "która jest monotoniczna (co oznacza, że klasa może być podklasowana bez "
1291+ "wpływu na kolejność pierwszeństwa jej rodziców). Łącznie właściwości te "
1292+ "umożliwiają projektowanie niezawodnych i rozszerzalnych klas z wielokrotnym "
1293+ "dziedziczeniem. Więcej szczegółów można znaleźć na stronie :ref:"
1294+ "`python_2.3_mro`."
11991295
12001296msgid "Private Variables"
12011297msgstr "Zmienne prywatne"
@@ -1254,20 +1350,46 @@ msgid ""
12541350" for item in zip(keys, values):\n"
12551351" self.items_list.append(item)"
12561352msgstr ""
1353+ "class Mapping:\n"
1354+ " def __init__(self, iterable):\n"
1355+ " self.przedmiot_lista = []\n"
1356+ " self.__update(iterable)\n"
1357+ "\n"
1358+ " def update(self, iterable):\n"
1359+ " for przedmiot in iterable:\n"
1360+ " self.przedmiot_lista.append(przedmiot)\n"
1361+ "\n"
1362+ " __update = update # prywatna kopia oryginalnej metody update()\n"
1363+ "\n"
1364+ "class MappingSubklasa(Mapping):\n"
1365+ "\n"
1366+ " def update(self, keys, values):\n"
1367+ " # zapewnia nową sygnaturę dla update()\n"
1368+ " # ale nie przerywa __init__()\n"
1369+ " for item in zip(keys, values):\n"
1370+ " self.items_list.append(item)"
12571371
12581372msgid ""
12591373"The above example would work even if ``MappingSubclass`` were to introduce a "
12601374"``__update`` identifier since it is replaced with ``_Mapping__update`` in "
12611375"the ``Mapping`` class and ``_MappingSubclass__update`` in the "
12621376"``MappingSubclass`` class respectively."
12631377msgstr ""
1378+ "Powyższy przykład zadziała nawet wtedy, gdy ``MappingSubclass`` wprowadzi "
1379+ "identyfikator ``__update``, ponieważ zostanie on zastąpiony odpowiednio "
1380+ "``_Mapping__update`` w klasie ``Mapping`` i ``_MappingSubclass__update`` w "
1381+ "klasie ``MappingSubclass``."
12641382
12651383msgid ""
12661384"Note that the mangling rules are designed mostly to avoid accidents; it "
12671385"still is possible to access or modify a variable that is considered "
12681386"private. This can even be useful in special circumstances, such as in the "
12691387"debugger."
12701388msgstr ""
1389+ "Należy pamiętać, że reguły mieszania zostały zaprojektowane głównie w celu "
1390+ "uniknięcia wypadków; nadal możliwy jest dostęp lub modyfikacja zmiennej, "
1391+ "która jest uważana za prywatną. Może to być nawet przydatne w szczególnych "
1392+ "okolicznościach, takich jak debugger."
12711393
12721394msgid ""
12731395"Notice that code passed to ``exec()`` or ``eval()`` does not consider the "
@@ -1286,6 +1408,9 @@ msgid ""
12861408"or C \" struct\" , bundling together a few named data items. The idiomatic "
12871409"approach is to use :mod:`dataclasses` for this purpose::"
12881410msgstr ""
1411+ "Czasami przydatne jest posiadanie typu danych podobnego do \" rekordu\" "
1412+ "Pascala lub \" struktury\" C, łączącego kilka nazwanych elementów danych. "
1413+ "Idiomatycznym podejściem jest użycie w tym celu :mod:`dataclasses`::"
12891414
12901415msgid ""
12911416"from dataclasses import dataclass\n"
@@ -1296,6 +1421,13 @@ msgid ""
12961421" dept: str\n"
12971422" salary: int"
12981423msgstr ""
1424+ "from dataclasses import dataclass\n"
1425+ "\n"
1426+ "@dataclass\n"
1427+ "class Pracownik:\n"
1428+ " imie: str\n"
1429+ " dzial: str\n"
1430+ " pensja: int"
12991431
13001432msgid ""
13011433">>> john = Employee('john', 'computer lab', 1000)\n"
@@ -1304,6 +1436,11 @@ msgid ""
13041436">>> john.salary\n"
13051437"1000"
13061438msgstr ""
1439+ ">>> stanislaw = Pracownik('stanislaw', 'pracownia komputerowa, 1000)\n"
1440+ ">>> stanislaw.dzial\n"
1441+ "'pracownia komputerowa'\n"
1442+ ">>> stanislaw.pensja\n"
1443+ "1000"
13071444
13081445msgid ""
13091446"A piece of Python code that expects a particular abstract data type can "
@@ -1320,9 +1457,9 @@ msgid ""
13201457"meth:`!m`, and :attr:`m.__func__ <method.__func__>` is the :ref:`function "
13211458"object <user-defined-funcs>` corresponding to the method."
13221459msgstr ""
1323- ":ref:` Obiekty metod instancji <instance-methods>` mają atrybut, także: :"
1460+ ":ref:` Instance method objects <instance-methods>` mają atrybut, także: :"
13241461"attr:`m.__self__ <method.__self__>` jest obiektem instancji z metodą :meth:`!"
1325- "m`, i :attr:`m.__func__ <method.__func__>` jest :ref:`funkcja obiektem ` "
1462+ "m`, i :attr:`m.__func__ <method.__func__>` jest :ref:`function object ` "
13261463"odpowiadającym metodzie."
13271464
13281465msgid "Iterators"
@@ -1387,6 +1524,21 @@ msgid ""
13871524" next(it)\n"
13881525"StopIteration"
13891526msgstr ""
1527+ ">>> s = 'abc'\n"
1528+ ">>> it = iter(s)\n"
1529+ ">>> it\n"
1530+ "<str_iterator object at 0x10c90e650>\n"
1531+ ">>> next(it)\n"
1532+ "'a'\n"
1533+ ">>> next(it)\n"
1534+ "'b'\n"
1535+ ">>> next(it)\n"
1536+ "'c'\n"
1537+ ">>> next(it)\n"
1538+ "Traceback (most recent call last):\n"
1539+ " File \" <stdin>\" , line 1, in <module>\n"
1540+ " next(it)\n"
1541+ "StopIteration"
13901542
13911543msgid ""
13921544"Having seen the mechanics behind the iterator protocol, it is easy to add "
@@ -1395,6 +1547,11 @@ msgid ""
13951547"the class defines :meth:`!__next__`, then :meth:`!__iter__` can just return "
13961548"``self``::"
13971549msgstr ""
1550+ "Po zapoznaniu się z mechaniką stojącą za protokołem iterator, łatwo jest "
1551+ "dodać iterator zachowanie do swoich klas. Zdefiniuj metodę :meth:"
1552+ "`~container.__iter__`, która zwracać obiekt z metodą :meth:`~iterator."
1553+ "__next__`. Jeśli klasa definiuje :meth:`!__next__`, to :meth:`!__iter__` "
1554+ "może po prostu zwracać ``self`` ::"
13981555
13991556msgid ""
14001557"class Reverse:\n"
@@ -1412,6 +1569,20 @@ msgid ""
14121569" self.index = self.index - 1\n"
14131570" return self.data[self.index]"
14141571msgstr ""
1572+ "class Reverse:\n"
1573+ " \"\"\" iterator do zapętlania sekwencji wstecz. \"\"\" \n"
1574+ " def __init__(self, dane):\n"
1575+ " self.dane = dane\n"
1576+ " self.indeks = len(dane)\n"
1577+ "\n"
1578+ " def __iter__(self):\n"
1579+ " return self\n"
1580+ "\n"
1581+ " def __next__(self):\n"
1582+ " if self.indeks == 0:\n"
1583+ " raise StopIteration\n"
1584+ " self.indeks = self.indeks - 1\n"
1585+ " return self.data[self.indeks]"
14151586
14161587msgid ""
14171588">>> rev = Reverse('spam')\n"
@@ -1480,20 +1651,32 @@ msgid ""
14801651"compact is that the :meth:`~iterator.__iter__` and :meth:`~generator."
14811652"__next__` methods are created automatically."
14821653msgstr ""
1654+ "Wszystko, co można zrobić za pomocą generatorów, można również zrobić za "
1655+ "pomocą iteratorów opartych na klasach, jak opisano w poprzedniej sekcji. "
1656+ "Kompaktowość generatorów polega na tym, że metody :meth:`~iterator.__iter__` "
1657+ "i :meth:`~generator.__next__` są tworzone automatycznie."
14831658
14841659msgid ""
14851660"Another key feature is that the local variables and execution state are "
14861661"automatically saved between calls. This made the function easier to write "
14871662"and much more clear than an approach using instance variables like ``self."
14881663"index`` and ``self.data``."
14891664msgstr ""
1665+ "Inną kluczową cechą jest to, że zmienne lokalne i stan wykonania są "
1666+ "automatycznie zapisywane między wywołaniami. Sprawia to, że funkcja jest "
1667+ "łatwiejszy do napisania i znacznie bardziej przejrzysty niż podejście "
1668+ "wykorzystujące zmienne instancji, takie jak ``self.index`` i ``self.data``."
14901669
14911670msgid ""
14921671"In addition to automatic method creation and saving program state, when "
14931672"generators terminate, they automatically raise :exc:`StopIteration`. In "
14941673"combination, these features make it easy to create iterators with no more "
14951674"effort than writing a regular function."
14961675msgstr ""
1676+ "Oprócz automatycznego tworzenia metod i zapisywania stanu programu, po "
1677+ "zakończeniu generatory automatycznie rzucić :exc:`StopIteration` . W "
1678+ "połączeniu, funkcje te ułatwiają tworzenie iteratorów bez większego wysiłku "
1679+ "niż napisanie zwykłego funkcja."
14971680
14981681msgid "Generator Expressions"
14991682msgstr "generator wyrażenia"
@@ -1528,6 +1711,22 @@ msgid ""
15281711">>> list(data[i] for i in range(len(data)-1, -1, -1))\n"
15291712"['f', 'l', 'o', 'g']"
15301713msgstr ""
1714+ ">>> sum(i*i for i in range(10)) # suma kwadratów\n"
1715+ "285\n"
1716+ "\n"
1717+ ">>> xvec = [10, 20, 30]\n"
1718+ ">>> yvec = [7, 5, 3]\n"
1719+ ">>> sum(x*y for x,y in zip(xvec, yvec)) # iloczyn skalarny\n"
1720+ "260\n"
1721+ "\n"
1722+ ">>> unique_words = set(word for line in page for word in line.split())\n"
1723+ "\n"
1724+ ">>> valedictorian = max((student.gpa, student.name) for student in "
1725+ "graduates)\n"
1726+ "\n"
1727+ ">>> data = 'golf'\n"
1728+ ">>> list(data[i] for i in range(len(data)-1, -1, -1))\n"
1729+ "['f', 'l', 'o', 'g']"
15311730
15321731msgid "Footnotes"
15331732msgstr "Przypisy"
0 commit comments