# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2001 Python Software Foundation
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
# Translators:
# python-doc bot, 2025
# Maciej Olko , 2026
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.14\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-29 14:28+0000\n"
"PO-Revision-Date: 2025-09-16 00:02+0000\n"
"Last-Translator: Maciej Olko , 2026\n"
"Language-Team: Polish (https://app.transifex.com/python-doc/teams/5390/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
msgid "Classes"
msgstr "Klasy"
msgid ""
"Classes provide a means of bundling data and functionality together. "
"Creating a new class creates a new *type* of object, allowing new "
"*instances* of that type to be made. Each class instance can have "
"attributes attached to it for maintaining its state. Class instances can "
"also have methods (defined by its class) for modifying its state."
msgstr ""
"Klasy umożliwiajÄ
ÅÄ
czenie danych i funkcjonalnoÅci. Tworzenie nowej klasy, "
"tworzy nowy *typ* obiektu, umożliwiajÄ
c tworzenie nowych *instancji* tego "
"typu. Do każdej instancji klasy można przypisaÄ atrybuty sÅużÄ
ce do "
"utrzymywania jej stanu. Instancje klas mogÄ
również posiadaÄ metody "
"(zdefiniowane przez klasÄ) umożliwiajÄ
ce modyfikacjÄ ich stanu."
msgid ""
"Compared with other programming languages, Python's class mechanism adds "
"classes with a minimum of new syntax and semantics. It is a mixture of the "
"class mechanisms found in C++ and Modula-3. Python classes provide all the "
"standard features of Object Oriented Programming: the class inheritance "
"mechanism allows multiple base classes, a derived class can override any "
"methods of its base class or classes, and a method can call the method of a "
"base class with the same name. Objects can contain arbitrary amounts and "
"kinds of data. As is true for modules, classes partake of the dynamic "
"nature of Python: they are created at runtime, and can be modified further "
"after creation."
msgstr ""
"W porównaniu do innych jÄzyków programowania, w Pythonie, mechanizm "
"dodawania nowych klas wymaga niewielkiej iloÅci nowej skÅadni i semantyki. "
"Jest to poÅÄ
czenie mechanizmu klas, które można znaleÅºÄ w C++ i Modula-3. "
"Klasy w Pythonie dostarczajÄ
wszystkie standardowe cechy programowania "
"obiektowego: mechanizm dziedziczenia klas pozwala na wiele klas bazowych, "
"klasy pochodne mogÄ
nadpisaÄ każdÄ
metodÄ klasy lub klas bazowych i metoda "
"może wywoÅaÄ metody klas bazowych o tej samej nazwie. Obiekty mogÄ
zawieraÄ "
"dowolnÄ
iloÅÄ i rodzaj danych. Zarówno klasy jak i moduÅy sÄ
czÄÅciÄ
"
"dynamicznej natury Pythona: sÄ
tworzone w trakcie dziaÅania programu i mogÄ
"
"byÄ modyfikowane później, po stworzeniu."
msgid ""
"In C++ terminology, normally class members (including the data members) are "
"*public* (except see below :ref:`tut-private`), and all member functions are "
"*virtual*. As in Modula-3, there are no shorthands for referencing the "
"object's members from its methods: the method function is declared with an "
"explicit first argument representing the object, which is provided "
"implicitly by the call. As in Smalltalk, classes themselves are objects. "
"This provides semantics for importing and renaming. Unlike C++ and "
"Modula-3, built-in types can be used as base classes for extension by the "
"user. Also, like in C++, most built-in operators with special syntax "
"(arithmetic operators, subscripting etc.) can be redefined for class "
"instances."
msgstr ""
"KorzystajÄ
c z terminologii C++, skÅadniki klas (także pola) sÄ
*publiczne* "
"(z wyjÄ
tkiem zobacz poniżej :ref:`tut-private`), a wszystkie metody sÄ
"
"*wirtualne*. Podobnie jak w Moduli-3, nie ma skrótów pozwalajÄ
cych na "
"odnoszenie siÄ do skÅadników klas z ich metod: metoda jest deklarowana "
"poprzez podanie wprost jako pierwszego argumentu obiektu, który w czasie "
"wywoÅania metody zostanie jej przekazany niejawnie. Podobnie jak w "
"Smalltalku, same klasy także sÄ
obiektami. Dostarcza nam to wyrażeŠ"
"semantycznych pozwalajÄ
cych na importowanie i zmianÄ nazw klasy. Inaczej niż "
"w C++ i Moduli-3 wbudowane typy mogÄ
stanowiÄ klasy, z których klasa "
"użytkownika bÄdzie dziedziczyÄ. Podobnie jak w C++, wiÄkszoÅÄ wbudowanych "
"operatorów ze specjalnÄ
skÅadniÄ
(operatory arytmetyczne, indeksowanie) może "
"byÄ przedefiniowane przez instancje klasy."
msgid ""
"(Lacking universally accepted terminology to talk about classes, I will make "
"occasional use of Smalltalk and C++ terms. I would use Modula-3 terms, "
"since its object-oriented semantics are closer to those of Python than C++, "
"but I expect that few readers have heard of it.)"
msgstr ""
"(Z powodu braku ogólnie zaakceptowanej terminologii w kontekÅcie klas, bÄdÄ "
"używaÅ terminów ze Smalltalk i C++. UżyÅbym Modula-3 ponieważ semantyka jego "
"programowania obiektowego jest bliższa Pythonowi niż C++ ale zakÅadam, że "
"mniej czytelników o nim sÅyszaÅo.)"
msgid "A Word About Names and Objects"
msgstr "Kilka sÅów o nazwach i obiektach"
msgid ""
"Objects have individuality, and multiple names (in multiple scopes) can be "
"bound to the same object. This is known as aliasing in other languages. "
"This is usually not appreciated on a first glance at Python, and can be "
"safely ignored when dealing with immutable basic types (numbers, strings, "
"tuples). However, aliasing has a possibly surprising effect on the "
"semantics of Python code involving mutable objects such as lists, "
"dictionaries, and most other types. This is usually used to the benefit of "
"the program, since aliases behave like pointers in some respects. For "
"example, passing an object is cheap since only a pointer is passed by the "
"implementation; and if a function modifies an object passed as an argument, "
"the caller will see the change --- this eliminates the need for two "
"different argument passing mechanisms as in Pascal."
msgstr ""
"Obiekty majÄ
indywidualnoÅÄ, a wiele nazw (w wielu zakresach) może byÄ "
"powiÄ
zanych z tym samym obiektem. Jest to znane jako aliasing w innych "
"jÄzykach. Zwykle nie jest to doceniane na pierwszy rzut oka w Pythonie i "
"można je bezpiecznie zignorowaÄ, gdy mamy do czynienia z niezmiennymi typami "
"podstawowymi (liczby, ciÄ
gi znaków, krotki). Jednak aliasing ma "
"prawdopodobnie zaskakujÄ
cy wpÅyw na semantykÄ kodu Pythona, który obejmuje "
"zmienne obiekty, takie jak listy, sÅowniki i wiÄkszoÅÄ innych typów. Jest to "
"zwykle wykorzystywane z korzyÅciÄ
dla programu, ponieważ aliasy pod pewnymi "
"wzglÄdami zachowujÄ
siÄ jak wskaźniki. Na przykÅad przekazanie obiektu jest "
"tanie, ponieważ implementacja przekazuje tylko wskaźnik; a jeÅli funkcja "
"modyfikuje obiekt przekazany jako argument, wywoÅujÄ
cy zobaczy zmianÄ --- "
"eliminuje to potrzebÄ stosowania dwóch różnych mechanizmów przekazywania "
"argumentów, jak w Pascalu."
msgid "Python Scopes and Namespaces"
msgstr "ZasiÄgi widocznoÅci i przestrzenie nazw w Pythonie"
msgid ""
"Before introducing classes, I first have to tell you something about "
"Python's scope rules. Class definitions play some neat tricks with "
"namespaces, and you need to know how scopes and namespaces work to fully "
"understand what's going on. Incidentally, knowledge about this subject is "
"useful for any advanced Python programmer."
msgstr ""
"Przed wprowadzeniem klas, najpierw muszÄ powiedzieÄ ci coÅ o zasadach "
"zakresu Pythona. Definicje klas stosujÄ
kilka zgrabnych sztuczek z "
"przestrzeniami nazw, a żeby w peÅni zrozumieÄ, co siÄ dzieje, trzeba "
"wiedzieÄ, jak dziaÅajÄ
zakresy i przestrzenie nazw."
msgid "Let's begin with some definitions."
msgstr "Zacznijmy od kilku definicji."
msgid ""
"A *namespace* is a mapping from names to objects. Most namespaces are "
"currently implemented as Python dictionaries, but that's normally not "
"noticeable in any way (except for performance), and it may change in the "
"future. Examples of namespaces are: the set of built-in names (containing "
"functions such as :func:`abs`, and built-in exception names); the global "
"names in a module; and the local names in a function invocation. In a sense "
"the set of attributes of an object also form a namespace. The important "
"thing to know about namespaces is that there is absolutely no relation "
"between names in different namespaces; for instance, two different modules "
"may both define a function ``maximize`` without confusion --- users of the "
"modules must prefix it with the module name."
msgstr ""
"*PrzestrzeÅ nazw* to odwzorowanie z nazw na obiekty. WiÄkszoÅÄ przestrzeni "
"nazw jest obecnie implementowana jako sÅowniki Pythona, ale to zwykle nie "
"jest zauważalne w żaden sposób (z wyjÄ
tkiem wydajnoÅci), a to może siÄ "
"zmieniÄ w przyszÅoÅci. PrzykÅadami przestrzeni nazw sÄ
: zbiór nazw "
"wbudowanych (zawierajÄ
cy funkcje np. :func:`abs` i nazwy wbudowanych "
"wyjÄ
tków); nazwy globalne w module; oraz nazwy lokalne w wywoÅaniu funkcji. "
"W pewnym sensie zbiór atrybutów obiektu również tworzy przestrzeŠnazw. "
"WażnÄ
rzeczÄ
, którÄ
należy wiedzieÄ o przestrzeniach nazw, jest to, że nie "
"ma absolutnie żadnych relacji miÄdzy nazwami w różnych przestrzeniach nazw; "
"na przykÅad, dwa różne moduÅy mogÄ
zdefiniowaÄ funkcjÄ ``maximize`` bez "
"zamieszania --- użytkownicy moduÅów muszÄ
poprzedziÄ go nazwÄ
moduÅu."
msgid ""
"By the way, I use the word *attribute* for any name following a dot --- for "
"example, in the expression ``z.real``, ``real`` is an attribute of the "
"object ``z``. Strictly speaking, references to names in modules are "
"attribute references: in the expression ``modname.funcname``, ``modname`` is "
"a module object and ``funcname`` is an attribute of it. In this case there "
"happens to be a straightforward mapping between the module's attributes and "
"the global names defined in the module: they share the same namespace! [#]_"
msgstr ""
"Nawiasem mówiÄ
c, używam sÅowa *atrybut* dla każdej nazwy nastÄpujÄ
cej po "
"kropce --- na przykÅad w wyrażeniu ``z.real``, ``real`` jest atrybutem "
"obiektu ``z``. ÅciÅle mówiÄ
c, odniesienia do nazw w moduÅach sÄ
"
"odniesieniami atrybutowymi: w wyrażeniu ``modname.funcname``, ``modname`` "
"jest obiektem moduÅu, a ``funcname`` jest jego atrybutem. W tym przypadku "
"istnieje proste odwzorowanie miÄdzy atrybutami moduÅu i nazwami globalnymi "
"zdefiniowanymi w module: majÄ
tÄ samÄ
przestrzeÅ nazw! [#]_"
msgid ""
"Attributes may be read-only or writable. In the latter case, assignment to "
"attributes is possible. Module attributes are writable: you can write "
"``modname.the_answer = 42``. Writable attributes may also be deleted with "
"the :keyword:`del` statement. For example, ``del modname.the_answer`` will "
"remove the attribute :attr:`!the_answer` from the object named by "
"``modname``."
msgstr ""
"Atrybuty mogÄ
byÄ tylko do odczytu lub zapisywalne. W tym drugim przypadku "
"możliwe jest przypisanie do atrybutu. Atrybuty moduÅu sÄ
zapisywalne: można "
"zapisaÄ ``modname.the_answer = 42``. Zapisywalne atrybuty można również "
"usunÄ
Ä za pomocÄ
instrukcji :keyword:`del`. Na przykÅad, ``del modname."
"the_answer`` usunie atrybut :attr:`!the_answer` z obiektu o nazwie "
"``modname``."
msgid ""
"Namespaces are created at different moments and have different lifetimes. "
"The namespace containing the built-in names is created when the Python "
"interpreter starts up, and is never deleted. The global namespace for a "
"module is created when the module definition is read in; normally, module "
"namespaces also last until the interpreter quits. The statements executed "
"by the top-level invocation of the interpreter, either read from a script "
"file or interactively, are considered part of a module called :mod:"
"`__main__`, so they have their own global namespace. (The built-in names "
"actually also live in a module; this is called :mod:`builtins`.)"
msgstr ""
"Przestrzenie nazw sÄ
tworzone w różnych momentach i majÄ
różny czas życia. "
"PrzestrzeÅ nazw zawierajÄ
ca nazwy wbudowane jest tworzona podczas "
"uruchamiania interpretera Pythona i nigdy nie jest usuwana. Globalna "
"przestrzeÅ nazw dla moduÅu jest tworzona, gdy wczytywana jest definicja "
"moduÅu; zwykle przestrzenie nazw moduÅu również trwajÄ
do zakoÅczenia "
"dziaÅania interpretera. Instrukcje wykonywane przez wywoÅanie interpretera "
"najwyższego poziomu, zarówno odczytane z pliku skryptu, jak i interaktywnie, "
"sÄ
uważane za czÄÅÄ moduÅu o nazwie :mod:`__main__`, wiÄc majÄ
swojÄ
wÅasnÄ
"
"globalnÄ
przestrzeÅ nazw. (Nazwy wbudowane w rzeczywistoÅci również znajdujÄ
"
"siÄ w module; nazwany jest on :mod:`builtins`)."
msgid ""
"The local namespace for a function is created when the function is called, "
"and deleted when the function returns or raises an exception that is not "
"handled within the function. (Actually, forgetting would be a better way to "
"describe what actually happens.) Of course, recursive invocations each have "
"their own local namespace."
msgstr ""
"Lokalna przestrzeÅ nazw dla funkcji jest tworzona przy wywoÅaniu funkcji i "
"usuwana, gdy funkcja zwraca wynik lub rzuca wyjÄ
tek, którego nie obsÅuguje. "
"(WÅaÅciwie, zapominanie byÅoby lepszym sÅowem na opisanie tego, co "
"faktycznie siÄ dzieje). OczywiÅcie, każde wywoÅanie rekurencyjne ma swojÄ
"
"wÅasnÄ
lokalnÄ
przestrzeÅ nazw."
msgid ""
"A *scope* is a textual region of a Python program where a namespace is "
"directly accessible. \"Directly accessible\" here means that an unqualified "
"reference to a name attempts to find the name in the namespace."
msgstr ""
"*Zakres* to tekstowy obszar programu Python, w którym przestrzeŠnazw jest "
"bezpoÅrednio dostÄpna. âBezpoÅrednio dostÄpnaâ oznacza tutaj, że "
"niekwalifikowane odwoÅanie do nazwy próbuje znaleÅºÄ jÄ
w przestrzeni nazw."
msgid ""
"Although scopes are determined statically, they are used dynamically. At any "
"time during execution, there are 3 or 4 nested scopes whose namespaces are "
"directly accessible:"
msgstr ""
"Chociaż zakresy sÄ
okreÅlane statycznie, sÄ
używane dynamicznie. CaÅy czas w "
"trakcie wykonywania programu istniejÄ
3 lub 4 zagnieżdżone zakresy, których "
"przestrzenie nazw sÄ
bezpoÅrednio dostÄpne:"
msgid "the innermost scope, which is searched first, contains the local names"
msgstr ""
"najbardziej wewnÄtrzny zakres, który jest przeszukiwany jako pierwszy, "
"zawiera nazwy lokalne"
msgid ""
"the scopes of any enclosing functions, which are searched starting with the "
"nearest enclosing scope, contain non-local, but also non-global names"
msgstr ""
"zakresy wszystkich otaczajÄ
cych funkcji, które sÄ
przeszukiwane poczÄ
wszy od "
"najbliższego otaczajÄ
cego zakresu, zawierajÄ
nazwy nielokalne, ale także "
"nieglobalne"
msgid "the next-to-last scope contains the current module's global names"
msgstr "przedostatni zakres zawiera globalne nazwy bieżÄ
cego moduÅu"
msgid ""
"the outermost scope (searched last) is the namespace containing built-in "
"names"
msgstr ""
"najbardziej zewnÄtrznym zakresem (przeszukiwanym jako ostatni) jest "
"przestrzeÅ nazw zawierajÄ
ca nazwy wbudowane"
msgid ""
"If a name is declared global, then all references and assignments go "
"directly to the next-to-last scope containing the module's global names. To "
"rebind variables found outside of the innermost scope, the :keyword:"
"`nonlocal` statement can be used; if not declared nonlocal, those variables "
"are read-only (an attempt to write to such a variable will simply create a "
"*new* local variable in the innermost scope, leaving the identically named "
"outer variable unchanged)."
msgstr ""
"JeÅli nazwa jest zadeklarowana jako globalna, wtedy wszystkie referencje i "
"przypisania przechodzÄ
bezpoÅrednio do przedostatniego zakresu zawierajÄ
cego "
"globalne nazwy moduÅu. Aby ponownie powiÄ
zaÄ zmienne znajdujÄ
ce siÄ poza "
"najbardziej wewnÄtrznym zakresem, można użyÄ instrukcji :keyword:`nonlocal`; "
"jeÅli nie sÄ
zadeklarowane jako nielokalne, zmienne te sÄ
tylko do odczytu "
"(próba zapisu do takiej zmiennej po prostu utworzy *nowÄ
* zmiennÄ
lokalnÄ
w "
"najbardziej wewnÄtrznym zakresie, pozostawiajÄ
c identycznie nazwanÄ
zmiennÄ
"
"zewnÄtrznÄ
bez zmian)."
msgid ""
"Usually, the local scope references the local names of the (textually) "
"current function. Outside functions, the local scope references the same "
"namespace as the global scope: the module's namespace. Class definitions "
"place yet another namespace in the local scope."
msgstr ""
"Zazwyczaj zakres lokalny odwoÅuje siÄ do nazw lokalnych (tekstowo) bieżÄ
cej "
"funkcji. Poza funkcjami, zakres lokalny odwoÅuje siÄ do tej samej "
"przestrzeni nazw, co zakres globalny: przestrzeni nazw moduÅu. Definicje "
"klas umieszczajÄ
jeszcze jednÄ
przestrzeÅ nazw w zakresie lokalnym."
msgid ""
"It is important to realize that scopes are determined textually: the global "
"scope of a function defined in a module is that module's namespace, no "
"matter from where or by what alias the function is called. On the other "
"hand, the actual search for names is done dynamically, at run time --- "
"however, the language definition is evolving towards static name resolution, "
"at \"compile\" time, so don't rely on dynamic name resolution! (In fact, "
"local variables are already determined statically.)"
msgstr ""
"Ważne jest, aby zdaÄ sobie sprawÄ, że zakresy sÄ
okreÅlane tekstowo: "
"globalny zakres funkcji zdefiniowany w module jest przestrzeniÄ
nazw tego "
"moduÅu, bez wzglÄdu na to, skÄ
d lub przez jaki alias funkcja jest "
"wywoÅywana. Z drugiej strony, rzeczywiste wyszukiwanie nazw odbywa siÄ "
"dynamicznie, w czasie wykonywania --- jednak definicja jÄzyka ewoluuje w "
"kierunku statycznego rozpoznawania nazw, w czasie âkompilacjiâ, wiÄc nie "
"należy polegaÄ na dynamicznym rozpoznawaniu nazw! (W rzeczywistoÅci zmienne "
"lokalne sÄ
już okreÅlane statycznie)."
msgid ""
"A special quirk of Python is that -- if no :keyword:`global` or :keyword:"
"`nonlocal` statement is in effect -- assignments to names always go into the "
"innermost scope. Assignments do not copy data --- they just bind names to "
"objects. The same is true for deletions: the statement ``del x`` removes "
"the binding of ``x`` from the namespace referenced by the local scope. In "
"fact, all operations that introduce new names use the local scope: in "
"particular, :keyword:`import` statements and function definitions bind the "
"module or function name in the local scope."
msgstr ""
"Szczególnym dziwactwem Pythona jest to, że â jeÅli nie dziaÅa instrukcja :"
"keyword:`global` lub :keyword:`nonlocal` â przypisanie do nazw zawsze trafia "
"do najbardziej wewnÄtrznego zakresu. Przypisania nie kopiujÄ
danych â po "
"prostu wiÄ
żÄ
nazwy z obiektami. To samo dotyczy usuwania: instrukcja ``del "
"x`` usuwa wiÄ
zanie ``x`` z przestrzeni nazw, do której odwoÅuje siÄ zakres "
"lokalny. W rzeczywistoÅci wszystkie operacje, które wprowadzajÄ
nowe nazwy, "
"używajÄ
zakresu lokalnego: w szczególnoÅci instrukcje :keyword:`import` i "
"definicje funkcji wiÄ
żÄ
nazwÄ moduÅu lub funkcji w zakresie lokalnym."
msgid ""
"The :keyword:`global` statement can be used to indicate that particular "
"variables live in the global scope and should be rebound there; the :keyword:"
"`nonlocal` statement indicates that particular variables live in an "
"enclosing scope and should be rebound there."
msgstr ""
"Instrukcja :keyword:`global` może byÄ użyta do wskazania, że okreÅlone "
"zmienne znajdujÄ
siÄ w zakresie globalnym i powinny byÄ tam ponownie "
"wiÄ
zane; instrukcja :keyword:`nonlocal` wskazuje, że okreÅlone zmienne "
"znajdujÄ
siÄ w zakresie otaczajÄ
cym i powinny byÄ tam ponownie wiÄ
zane."
msgid "Scopes and Namespaces Example"
msgstr "PrzykÅad zakresów i przestrzeni nazw"
msgid ""
"This is an example demonstrating how to reference the different scopes and "
"namespaces, and how :keyword:`global` and :keyword:`nonlocal` affect "
"variable binding::"
msgstr ""
"Oto przykÅad pokazujÄ
cy, jak odwoÅywaÄ siÄ do różnych zakresów i przestrzeni "
"nazw oraz jak :keyword:`global` i :keyword:`nonlocal` wpÅywajÄ
na wiÄ
zanie "
"zmiennych::"
msgid ""
"def scope_test():\n"
" def do_local():\n"
" spam = \"local spam\"\n"
"\n"
" def do_nonlocal():\n"
" nonlocal spam\n"
" spam = \"nonlocal spam\"\n"
"\n"
" def do_global():\n"
" global spam\n"
" spam = \"global spam\"\n"
"\n"
" spam = \"test spam\"\n"
" do_local()\n"
" print(\"After local assignment:\", spam)\n"
" do_nonlocal()\n"
" print(\"After nonlocal assignment:\", spam)\n"
" do_global()\n"
" print(\"After global assignment:\", spam)\n"
"\n"
"scope_test()\n"
"print(\"In global scope:\", spam)"
msgstr ""
"def scope_test():\n"
" def do_local():\n"
" spam = \"lokalna konserwa\"\n"
"\n"
" def do_nonlocal():\n"
" nonlocal spam\n"
" spam = \"nielokalna konserwa\"\n"
"\n"
" def do_global():\n"
" global spam\n"
" spam = \"globalna konserwa\"\n"
"\n"
" spam = \"testowa konserwa\"\n"
" do_local()\n"
" print(\"Po przypisaniu lokalnym:\", spam)\n"
" do_nonlocal()\n"
" print(\"Po przypisaniu nielokalnym:\", spam)\n"
" do_global()\n"
" print(\"Po przypisaniu globalnym:\", spam)\n"
"\n"
"scope_test()\n"
"print(\"W globalnym zakresie:\", spam)"
msgid "The output of the example code is:"
msgstr "WyjÅcie przykÅadowego kodu to:"
msgid ""
"After local assignment: test spam\n"
"After nonlocal assignment: nonlocal spam\n"
"After global assignment: nonlocal spam\n"
"In global scope: global spam"
msgstr ""
"Po przypisaniu lokalnym: testowa konserwa\n"
"Po przypisaniu nielokalnym: nielokalna konserwa\n"
"Po przypisaniu globalnym: nielokalna konserwa\n"
"W globalnym zakresie: globalna konserwa"
msgid ""
"Note how the *local* assignment (which is default) didn't change "
"*scope_test*\\'s binding of *spam*. The :keyword:`nonlocal` assignment "
"changed *scope_test*\\'s binding of *spam*, and the :keyword:`global` "
"assignment changed the module-level binding."
msgstr ""
"Zauważ, że *lokalne* przypisanie (które jest domyÅlne) nie zmieniÅo wiÄ
zania "
"*spam* w *scope_test*. Przypisanie :keyword:`nonlocal` zmieniÅo wiÄ
zanie "
"*spam* w *scope_test*, a przypisanie :keyword:`global` zmieniÅo wiÄ
zanie na "
"poziomie moduÅu."
msgid ""
"You can also see that there was no previous binding for *spam* before the :"
"keyword:`global` assignment."
msgstr ""
"Można również zauważyÄ, że nie byÅo wczeÅniejszego powiÄ
zania dla *spam* "
"przed przypisaniem :keyword:`global`."
msgid "A First Look at Classes"
msgstr "Pierwsze spojrzenie na klasy"
msgid ""
"Classes introduce a little bit of new syntax, three new object types, and "
"some new semantics."
msgstr ""
"Klasy wprowadzajÄ
trochÄ nowej skÅadni, trzy nowe typy obiektów i trochÄ "
"nowej semantyki."
msgid "Class Definition Syntax"
msgstr "SkÅadnia definicji klasy"
msgid "The simplest form of class definition looks like this::"
msgstr "Najprostsza forma definicji klasy wyglÄ
da nastÄpujÄ
co::"
msgid ""
"class ClassName:\n"
" \n"
" .\n"
" .\n"
" .\n"
" "
msgstr ""
"class ClassName:\n"
" \n"
" .\n"
" .\n"
" .\n"
" "
msgid ""
"Class definitions, like function definitions (:keyword:`def` statements) "
"must be executed before they have any effect. (You could conceivably place "
"a class definition in a branch of an :keyword:`if` statement, or inside a "
"function.)"
msgstr ""
"Definicje klas, podobnie jak definicje funkcji (instrukcje :keyword:`def`), "
"muszÄ
zostaÄ wykonane, zanim bÄdÄ
miaÅy jakikolwiek efekt. (Można sobie "
"wyobraziÄ umieszczenie definicji klasy w gaÅÄzi instrukcji :keyword:`if` lub "
"wewnÄ
trz funkcji.)"
msgid ""
"In practice, the statements inside a class definition will usually be "
"function definitions, but other statements are allowed, and sometimes useful "
"--- we'll come back to this later. The function definitions inside a class "
"normally have a peculiar form of argument list, dictated by the calling "
"conventions for methods --- again, this is explained later."
msgstr ""
"W praktyce, instrukcje wewnÄ
trz definicji klasy bÄdÄ
zwykle definicjami "
"funkcji, ale inne instrukcje sÄ
dozwolone, a czasem przydatne --- wrócimy do "
"tego później. Definicje funkcji wewnÄ
trz klasy zwykle majÄ
specyficznÄ
formÄ "
"listy argumentów, podyktowanÄ
konwencjami wywoÅywania metod --- ponownie, "
"zostanie to wyjaÅnione później."
msgid ""
"When a class definition is entered, a new namespace is created, and used as "
"the local scope --- thus, all assignments to local variables go into this "
"new namespace. In particular, function definitions bind the name of the new "
"function here."
msgstr ""
"Po wejÅciu w definicjÄ klasy tworzona jest nowa przestrzeÅ nazw i używana "
"jako zakres lokalny --- a zatem wszystkie przypisania do zmiennych lokalnych "
"trafiajÄ
do tej nowej przestrzeni nazw. W szczególnoÅci, definicje funkcji "
"wiÄ
żÄ
nazwÄ nowej funkcji w tej przestrzeni nazw."
msgid ""
"When a class definition is left normally (via the end), a *class object* is "
"created. This is basically a wrapper around the contents of the namespace "
"created by the class definition; we'll learn more about class objects in the "
"next section. The original local scope (the one in effect just before the "
"class definition was entered) is reinstated, and the class object is bound "
"here to the class name given in the class definition header (:class:`!"
"ClassName` in the example)."
msgstr ""
"Kiedy definicja klasy jest opuszczana normalnie (przez koniec), tworzony "
"jest *obiekt klasy*. Jest to w zasadzie opakowanie wokóŠzawartoÅci "
"przestrzeni nazw utworzonej przez definicjÄ klasy; dowiemy siÄ wiÄcej o "
"obiektach klas w nastÄpnej sekcji. Oryginalny zakres lokalny (ten, który "
"obowiÄ
zywaŠtuż przed wprowadzeniem definicji klasy) zostaje przywrócony, a "
"obiekt klasy jest powiÄ
zany z nazwÄ
klasy podanÄ
w nagÅówku definicja klasy "
"(:class:`!ClassName` w przykÅadzie)."
msgid "Class Objects"
msgstr "Obiekty klas"
msgid ""
"Class objects support two kinds of operations: attribute references and "
"instantiation."
msgstr ""
"Obiekty klas obsÅugujÄ
dwa rodzaje operacji: odniesienia do atrybutów i "
"tworzenie instancji."
msgid ""
"*Attribute references* use the standard syntax used for all attribute "
"references in Python: ``obj.name``. Valid attribute names are all the names "
"that were in the class's namespace when the class object was created. So, "
"if the class definition looked like this::"
msgstr ""
"*Odniesienia do atrybutów* używajÄ
standardowej skÅadni używanej dla "
"wszystkich odniesieÅ do atrybutów w Pythonie: ``obj.name``. PrawidÅowe "
"nazwy atrybutów to wszystkie nazwy, które znajdowaÅy siÄ w przestrzeni nazw "
"klasy, gdy obiekt klasy zostaÅ utworzony. Tak wiÄc, jeÅli definicja klasy "
"wyglÄ
daÅa tak::"
msgid ""
"class MyClass:\n"
" \"\"\"A simple example class\"\"\"\n"
" i = 12345\n"
"\n"
" def f(self):\n"
" return 'hello world'"
msgstr ""
"class MyClass:\n"
" \"\"\"Prosta przykÅadowa klasa\"\"\"\n"
" i = 12345\n"
"\n"
" def f(self):\n"
" return 'witaj Åwiecie'"
msgid ""
"then ``MyClass.i`` and ``MyClass.f`` are valid attribute references, "
"returning an integer and a function object, respectively. Class attributes "
"can also be assigned to, so you can change the value of ``MyClass.i`` by "
"assignment. :attr:`~type.__doc__` is also a valid attribute, returning the "
"docstring belonging to the class: ``\"A simple example class\"``."
msgstr ""
"wtedy ``MyClass.i`` i ``MyClass.f`` sÄ
poprawnymi odniesieniami do "
"atrybutów, zwracajÄ
cymi odpowiednio liczbÄ caÅkowitÄ
i funkcjÄ. Do atrybutów "
"klasowych można również przypisywaÄ wartoÅci, wiÄc można zmieniÄ wartoÅÄ "
"``MyClass.i`` przez przypisanie. :attr:`~type.__doc__` jest również "
"poprawnym atrybutem, zwracajÄ
cym docstring należÄ
cy do klasy: ``\"Prosta "
"przykÅadowa klasa\"``."
msgid ""
"Class *instantiation* uses function notation. Just pretend that the class "
"object is a parameterless function that returns a new instance of the class. "
"For example (assuming the above class)::"
msgstr ""
"*Instancjonowanie* klasy używa notacji funkcji. Wystarczy wyobraziÄ sobie, "
"że obiekt klasy jest bezparametrowÄ
funkcjÄ
, która zwraca nowÄ
instancjÄ "
"klasy. Na przykÅad (zakÅadajÄ
c powyższÄ
klasÄ)::"
msgid "x = MyClass()"
msgstr "x = MyClass()"
msgid ""
"creates a new *instance* of the class and assigns this object to the local "
"variable ``x``."
msgstr ""
"tworzy nowÄ
*instancjÄ* klasy i przypisuje ten obiekt do zmiennej lokalnej "
"``x``."
msgid ""
"The instantiation operation (\"calling\" a class object) creates an empty "
"object. Many classes like to create objects with instances customized to a "
"specific initial state. Therefore a class may define a special method named :"
"meth:`~object.__init__`, like this::"
msgstr ""
"Operacja instancjonowania (âwywoÅanieâ obiektu klasy) tworzy pusty obiekt. "
"Wiele klas lubi tworzyÄ obiekty z instancjami dostosowanymi do okreÅlonego "
"stanu poczÄ
tkowego. Dlatego klasa może zdefiniowaÄ specjalnÄ
metodÄ o "
"nazwie :meth:`~object.__init__`, takÄ
jak ta::"
msgid ""
"def __init__(self):\n"
" self.data = []"
msgstr ""
"def __init__(self):\n"
" self.data = []"
msgid ""
"When a class defines an :meth:`~object.__init__` method, class instantiation "
"automatically invokes :meth:`!__init__` for the newly created class "
"instance. So in this example, a new, initialized instance can be obtained "
"by::"
msgstr ""
"Gdy klasa definiuje metodÄ :meth:`~object.__init__`, instancjonowanie klasy "
"automatycznie wywoÅuje :meth:`!__init__` dla nowo utworzonej instancji "
"klasy. Tak wiÄc w tym przykÅadzie nowÄ
, zainicjalizowanÄ
instancjÄ można "
"uzyskaÄ przez::"
msgid ""
"Of course, the :meth:`~object.__init__` method may have arguments for "
"greater flexibility. In that case, arguments given to the class "
"instantiation operator are passed on to :meth:`!__init__`. For example, ::"
msgstr ""
"OczywiÅcie metoda :meth:`~object.__init__` może mieÄ argumenty dla wiÄkszej "
"elastycznoÅci. W takim przypadku argumenty podane operatorowi "
"instancjonowania klasy sÄ
przekazywane do :meth:`!__init__`. Na przykÅad ::"
msgid ""
">>> class Complex:\n"
"... def __init__(self, realpart, imagpart):\n"
"... self.r = realpart\n"
"... self.i = imagpart\n"
"...\n"
">>> x = Complex(3.0, -4.5)\n"
">>> x.r, x.i\n"
"(3.0, -4.5)"
msgstr ""
">>> class Complex:\n"
"... def __init__(self, realpart, imagpart):\n"
"... self.r = realpart\n"
"... self.i = imagpart\n"
"...\n"
">>> x = Complex(3.0, -4.5)\n"
">>> x.r, x.i\n"
"(3.0, -4.5)"
msgid "Instance Objects"
msgstr "Obiekty instancji"
msgid ""
"Now what can we do with instance objects? The only operations understood by "
"instance objects are attribute references. There are two kinds of valid "
"attribute names: data attributes and methods."
msgstr ""
"Co możemy zrobiÄ z obiektami instancji? Jedynymi operacjami rozumianymi "
"przez obiekty instancji sÄ
odniesienia do atrybutów. IstniejÄ
dwa rodzaje "
"poprawnych nazw atrybutów: atrybuty danych i metody."
msgid ""
"*Data attributes* correspond to \"instance variables\" in Smalltalk, and to "
"\"data members\" in C++. Data attributes need not be declared; like local "
"variables, they spring into existence when they are first assigned to. For "
"example, if ``x`` is the instance of :class:`!MyClass` created above, the "
"following piece of code will print the value ``16``, without leaving a "
"trace::"
msgstr ""
"*Atrybuty danych* odpowiadajÄ
âzmiennym instancjiâ w Smalltalku i "
"âskÅadowymâ w C++. Atrybuty danych nie muszÄ
byÄ deklarowane; podobnie jak "
"zmienna lokalna, powstajÄ
, gdy zostanÄ
po raz pierwszy przypisane. Na "
"przykÅad, jeÅli ``x`` jest instancjÄ
:class:`!MyClass` utworzonej powyżej, "
"nastÄpujÄ
cy fragment kodu wydrukuje wartoÅÄ ``16``, bez pozostawiania Åladu::"
msgid ""
"x.counter = 1\n"
"while x.counter < 10:\n"
" x.counter = x.counter * 2\n"
"print(x.counter)\n"
"del x.counter"
msgstr ""
"x.counter = 1\n"
"while x.counter < 10:\n"
" x.counter = x.counter * 2\n"
"print(x.counter)\n"
"del x.counter"
msgid ""
"The other kind of instance attribute reference is a *method*. A method is a "
"function that \"belongs to\" an object."
msgstr ""
"Innym rodzajem odniesienia do atrybutu instancji jest *metoda*. Metoda to "
"funkcja, która ânależyâ do obiektu."
msgid ""
"Valid method names of an instance object depend on its class. By "
"definition, all attributes of a class that are function objects define "
"corresponding methods of its instances. So in our example, ``x.f`` is a "
"valid method reference, since ``MyClass.f`` is a function, but ``x.i`` is "
"not, since ``MyClass.i`` is not. But ``x.f`` is not the same thing as "
"``MyClass.f`` --- it is a *method object*, not a function object."
msgstr ""
"PrawidÅowe nazwy metod obiektu instancji zależÄ
od jego klasy. Z definicji "
"wszystkie atrybuty klasy, które sÄ
obiektami funkcji definiujÄ
odpowiednie "
"metody jej instancji. Tak wiÄc w naszym przykÅadzie, ``x.f`` jest poprawnym "
"odwoÅaniem do metody, ponieważ ``MyClass.f`` jest funkcjÄ
, ale ``x.i`` nie "
"jest, ponieważ ``MyClass.i`` nie jest. Ale ``x.f`` nie jest tym samym co "
"``MyClass.f`` --- jest *obiektem metody*, a nie obiektem funkcji."
msgid "Method Objects"
msgstr "Obiekty metod"
msgid "Usually, a method is called right after it is bound::"
msgstr "Zazwyczaj metoda jest wywoÅywana zaraz po jej powiÄ
zaniu::"
msgid "x.f()"
msgstr "x.f()"
msgid ""
"If ``x = MyClass()``, as above, this will return the string ``'hello "
"world'``. However, it is not necessary to call a method right away: ``x.f`` "
"is a method object, and can be stored away and called at a later time. For "
"example::"
msgstr ""
"JeÅli ``x = MyClass()``, jak powyżej, powyższe zwróci napis ``'hello "
"world'`` . Nie jest jednak konieczne wywoÅywanie metody od razu: ``x.f`` "
"jest obiektem metody i może byÄ przechowywany i wywoÅywany później. Na "
"przykÅad::"
msgid ""
"xf = x.f\n"
"while True:\n"
" print(xf())"
msgstr ""
"xf = x.f\n"
"while True:\n"
" print(xf())"
msgid "will continue to print ``hello world`` until the end of time."
msgstr "bÄdzie drukowaÄ ``witaj Åwiecie`` do koÅca czasu."
msgid ""
"What exactly happens when a method is called? You may have noticed that ``x."
"f()`` was called without an argument above, even though the function "
"definition for :meth:`!f` specified an argument. What happened to the "
"argument? Surely Python raises an exception when a function that requires an "
"argument is called without any --- even if the argument isn't actually "
"used..."
msgstr ""
"Co dokÅadnie dzieje siÄ, gdy wywoÅywana jest metoda? ByÄ może zauważyÅeÅ(-"
"ÅaÅ), że powyżej ``x.f()`` zostaÅa wywoÅana bez argumentu, mimo że definicja "
"funkcji dla :meth:`!f` okreÅlaÅa argument. Co siÄ staÅo z argumentem? Z "
"pewnoÅciÄ
Python rzuca wyjÄ
tek, gdy funkcja, który wymaga argumentu jest "
"wywoÅywana bez żadnego --- nawet jeÅli argument nie jest faktycznie używanyâ¦"
msgid ""
"Actually, you may have guessed the answer: the special thing about methods "
"is that the instance object is passed as the first argument of the "
"function. In our example, the call ``x.f()`` is exactly equivalent to "
"``MyClass.f(x)``. In general, calling a method with a list of *n* arguments "
"is equivalent to calling the corresponding function with an argument list "
"that is created by inserting the method's instance object before the first "
"argument."
msgstr ""
"WÅaÅciwie, byÄ może zgadÅeÅ(-ÅaÅ) odpowiedź: szczególnÄ
rzeczÄ
w metodach "
"jest to, że obiekt instancji jest przekazywany jako pierwszy argument "
"funkcji. W naszym przykÅadzie wywoÅanie ``x.f()`` jest dokÅadnie równoważne "
"wywoÅaniu ``MyClass.f(x)``. Ogólnie rzecz biorÄ
c, wywoÅanie metody z listÄ
"
"*n* argumentów jest równoważne wywoÅaniu odpowiedniej funkcji z listÄ
"
"argumentów, która jest tworzona przez wstawienie obiektu instancji metody "
"przed pierwszym argumentem."
msgid ""
"In general, methods work as follows. When a non-data attribute of an "
"instance is referenced, the instance's class is searched. If the name "
"denotes a valid class attribute that is a function object, references to "
"both the instance object and the function object are packed into a method "
"object. When the method object is called with an argument list, a new "
"argument list is constructed from the instance object and the argument list, "
"and the function object is called with this new argument list."
msgstr ""
"Ogólnie rzecz biorÄ
c, metody dziaÅajÄ
w nastÄpujÄ
cy sposób. Gdy odwoÅywane "
"jest nie-dane atrybut instancji, wyszukiwana jest klasa instancji. JeÅli "
"nazwa wskazuje na prawidÅowÄ
klasÄ atrybut, która jest obiektem funkcja, "
"odwoÅania zarówno do obiektu instancji, jak i obiektu funkcja sÄ
pakowane do "
"obiektu metody. Gdy obiekt metody jest wywoÅywany z listÄ
argument, nowa "
"lista argument jest konstruowana z instancji obiektu i listy argument, a "
"obiekt funkcja jest wywoÅywany z tÄ
nowÄ
listÄ
argument."
msgid "Class and Instance Variables"
msgstr "Zmienne klas i instancji"
msgid ""
"Generally speaking, instance variables are for data unique to each instance "
"and class variables are for attributes and methods shared by all instances "
"of the class::"
msgstr ""
"Ogólnie rzecz biorÄ
c, zmienne instancji sÄ
dla danych unikalnych dla każdej "
"instancji, a zmienne klasy sÄ
dla atrybutów i metod wspóÅdzielonych przez "
"wszystkie instancje klasy::"
msgid ""
"class Dog:\n"
"\n"
" kind = 'canine' # class variable shared by all instances\n"
"\n"
" def __init__(self, name):\n"
" self.name = name # instance variable unique to each instance\n"
"\n"
">>> d = Dog('Fido')\n"
">>> e = Dog('Buddy')\n"
">>> d.kind # shared by all dogs\n"
"'canine'\n"
">>> e.kind # shared by all dogs\n"
"'canine'\n"
">>> d.name # unique to d\n"
"'Fido'\n"
">>> e.name # unique to e\n"
"'Buddy'"
msgstr ""
"class Dog:\n"
"\n"
" kind = 'pies' # zmienna klasowa wspóÅdzielona przez wszystkie instancje\n"
"\n"
" def __init__(self, name):\n"
" self.name = name # zmienna instancji unikalna dla każdej instancji\n"
"\n"
">>> d = Dog('Fido')\n"
">>> e = Dog('Zito')\n"
">>> d.kind # wspóÅdzielona przez wszystkie psy\n"
"'pies'\n"
">>> e.kind # wspóÅdzielona przez wszystkie psy\n"
"'pies'\n"
">>> d.name # unikalna dla d\n"
"'Fido'\n"
">>> e.name # unikalna dla e\n"
"'Zito'"
msgid ""
"As discussed in :ref:`tut-object`, shared data can have possibly surprising "
"effects involving :term:`mutable` objects such as lists and dictionaries. "
"For example, the *tricks* list in the following code should not be used as a "
"class variable because just a single list would be shared by all *Dog* "
"instances::"
msgstr ""
"Jak omówiono w :ref:`tut-object`, wspóÅdzielone dane mogÄ
mieÄ zaskakujÄ
ce "
"efekty z udziaÅem :term:`mutable` obiektów takich jak listy i sÅownik. Na "
"przykÅad, lista *tricks* w poniższym kodzie nie powinna byÄ używana jako "
"zmienna klasowa, ponieważ tylko jedna lista byÅaby wspóÅdzielona przez "
"wszystkie instancje klasy *Dog*::"
msgid ""
"class Dog:\n"
"\n"
" tricks = [] # mistaken use of a class variable\n"
"\n"
" def __init__(self, name):\n"
" self.name = name\n"
"\n"
" def add_trick(self, trick):\n"
" self.tricks.append(trick)\n"
"\n"
">>> d = Dog('Fido')\n"
">>> e = Dog('Buddy')\n"
">>> d.add_trick('roll over')\n"
">>> e.add_trick('play dead')\n"
">>> d.tricks # unexpectedly shared by all dogs\n"
"['roll over', 'play dead']"
msgstr ""
"class Dog:\n"
"\n"
" tricks = [] # bÅÄdne użycie zmiennej klasowej\n"
"\n"
" def __init__(self, name):\n"
" self.name = name\n"
"\n"
" def add_trick(self, trick):\n"
" self.tricks.append(trick)\n"
"\n"
">>> d = Dog('Fido')\n"
">>> e = Dog('Buddy')\n"
">>> d.add_trick('przewrÃ³Ä siÄ')\n"
">>> e.add_trick('udawaj martwego')\n"
">>> d.tricks # nieoczekiwanie wspóÅdzielone przez wszystkie "
"psy\n"
"['przewrÃ³Ä siÄ', 'udawaj martwego']"
msgid "Correct design of the class should use an instance variable instead::"
msgstr ""
"PrawidÅowy projekt klasy powinien zamiast tego używaÄ zmiennej instancji::"
msgid ""
"class Dog:\n"
"\n"
" def __init__(self, name):\n"
" self.name = name\n"
" self.tricks = [] # creates a new empty list for each dog\n"
"\n"
" def add_trick(self, trick):\n"
" self.tricks.append(trick)\n"
"\n"
">>> d = Dog('Fido')\n"
">>> e = Dog('Buddy')\n"
">>> d.add_trick('roll over')\n"
">>> e.add_trick('play dead')\n"
">>> d.tricks\n"
"['roll over']\n"
">>> e.tricks\n"
"['play dead']"
msgstr ""
"class Dog:\n"
"\n"
" def __init__(self, name):\n"
" self.name = name\n"
" self.tricks = [] # tworzy nowÄ
pustÄ
listÄ dla każdego psa\n"
"\n"
" def add_trick(self, trick):\n"
" self.tricks.append(trick)\n"
"\n"
">>> d = Dog('Fido')\n"
">>> e = Dog('Zito')\n"
">>> d.add_trick('przewrÃ³Ä siÄ')\n"
">>> e.add_trick('udawaj martwego')\n"
">>> d.tricks\n"
"['przewrÃ³Ä siÄ']\n"
">>> e.tricks\n"
"['udawaj martwego']"
msgid "Random Remarks"
msgstr "Uwagi losowe"
msgid ""
"If the same attribute name occurs in both an instance and in a class, then "
"attribute lookup prioritizes the instance::"
msgstr ""
"JeÅli ten sam atrybut wystÄpuje zarówno w instancji, jak i w klasie, wówczas "
"wyszukiwanie atrybut nadaje priorytet instancji::"
msgid ""
">>> class Warehouse:\n"
"... purpose = 'storage'\n"
"... region = 'west'\n"
"...\n"
">>> w1 = Warehouse()\n"
">>> print(w1.purpose, w1.region)\n"
"storage west\n"
">>> w2 = Warehouse()\n"
">>> w2.region = 'east'\n"
">>> print(w2.purpose, w2.region)\n"
"storage east"
msgstr ""
">>> class Magazyn:\n"
"... cel = 'przechowywanie'\n"
"... region = 'zachód'\n"
"...\n"
">>> m1 = Magazyn()\n"
">>> print(m1.cel, m1.region)\n"
"przechowywanie zachód\n"
">>> m2 = Magazyn()\n"
">>> m2.region = 'wschód'\n"
">>> print(m2.cel, m2.region)\n"
"przechowywanie wschód"
msgid ""
"Data attributes may be referenced by methods as well as by ordinary users "
"(\"clients\") of an object. In other words, classes are not usable to "
"implement pure abstract data types. In fact, nothing in Python makes it "
"possible to enforce data hiding --- it is all based upon convention. (On "
"the other hand, the Python implementation, written in C, can completely hide "
"implementation details and control access to an object if necessary; this "
"can be used by extensions to Python written in C.)"
msgstr ""
"Do danych atrybut mogÄ
odwoÅywaÄ siÄ zarówno metody, jak i zwykli "
"użytkownicy (\"klienci\") obiektu. Innymi sÅowy, klasy nie nadajÄ
siÄ do "
"implementacji czysto abstrakcyjnych typów danych. W rzeczywistoÅci nic w "
"Python nie umożliwia wymuszenia ukrywania danych --- wszystko opiera siÄ na "
"konwencji. (Z drugiej strony, implementacja Python, napisana w C, może "
"caÅkowicie ukryÄ szczegóÅy implementacji i kontrolowaÄ dostÄp do obiektu, "
"jeÅli to konieczne; może to byÄ wykorzystane przez rozszerzenia Python "
"napisane w C)."
msgid ""
"Clients should use data attributes with care --- clients may mess up "
"invariants maintained by the methods by stamping on their data attributes. "
"Note that clients may add data attributes of their own to an instance object "
"without affecting the validity of the methods, as long as name conflicts are "
"avoided --- again, a naming convention can save a lot of headaches here."
msgstr ""
"Klienci powinni używaÄ danych atrybut z ostrożnoÅciÄ
--- klienci mogÄ
zepsuÄ "
"niezmienniki utrzymywane przez metody poprzez stemplowanie ich danych "
"atrybut. Należy pamiÄtaÄ, że klienci mogÄ
dodawaÄ wÅasne dane atrybut do "
"obiektu instancji bez wpÅywu na ważnoÅÄ metod, o ile unika siÄ konfliktów "
"nazw --- ponownie, konwencja nazewnictwa może tutaj zaoszczÄdziÄ wiele "
"problemow."
msgid ""
"There is no shorthand for referencing data attributes (or other methods!) "
"from within methods. I find that this actually increases the readability of "
"methods: there is no chance of confusing local variables and instance "
"variables when glancing through a method."
msgstr ""
"Nie ma skrótu do odwoÅywania siÄ do danych atrybut (lub innych metod!) z "
"poziomu metod. Uważam, że w rzeczywistoÅci zwiÄksza to czytelnoÅÄ metod: "
"nie ma szans na pomylenie zmiennych lokalnych i zmiennych instancji podczas "
"przeglÄ
dania metody."
msgid ""
"Often, the first argument of a method is called ``self``. This is nothing "
"more than a convention: the name ``self`` has absolutely no special meaning "
"to Python. Note, however, that by not following the convention your code "
"may be less readable to other Python programmers, and it is also conceivable "
"that a *class browser* program might be written that relies upon such a "
"convention."
msgstr ""
"CzÄsto pierwsza argument metody jest nazywana ``self``. Jest to nic wiÄcej "
"niż konwencja: nazwa ``self`` nie ma absolutnie żadnego specjalnego "
"znaczenia dla Python. Należy jednak pamiÄtaÄ, że nieprzestrzeganie tej "
"konwencji może sprawiÄ, że kod bÄdzie mniej czytelny dla innych programistów "
"Python, a także możliwe jest napisanie programu *przeglÄ
darki klas*, który "
"opiera siÄ na takiej konwencji."
msgid ""
"Any function object that is a class attribute defines a method for instances "
"of that class. It is not necessary that the function definition is "
"textually enclosed in the class definition: assigning a function object to a "
"local variable in the class is also ok. For example::"
msgstr ""
"Każdy obiekt funkcja bÄdÄ
cy klasÄ
atrybut definiuje metodÄ dla instancji tej "
"klasy. Nie jest konieczne, aby definicja funkcja byÅa tekstowo zawarta w "
"definicja klasy: przypisanie obiektu funkcja do zmiennej lokalnej w klasie "
"jest również w porzÄ
dku. Na przykÅad::"
msgid ""
"# Function defined outside the class\n"
"def f1(self, x, y):\n"
" return min(x, x+y)\n"
"\n"
"class C:\n"
" f = f1\n"
"\n"
" def g(self):\n"
" return 'hello world'\n"
"\n"
" h = g"
msgstr ""
"# funkcja zdefiniowane poza klasÄ
\n"
"def f1(self, x, y):\n"
" return min(x, x+y)\n"
"\n"
"class C:\n"
" f = f1\n"
"\n"
" def g(self):\n"
" return 'hello world'\n"
"\n"
" h = g"
msgid ""
"Now ``f``, ``g`` and ``h`` are all attributes of class :class:`!C` that "
"refer to function objects, and consequently they are all methods of "
"instances of :class:`!C` --- ``h`` being exactly equivalent to ``g``. Note "
"that this practice usually only serves to confuse the reader of a program."
msgstr ""
"Teraz ``f``, ``g`` i ``h`` sÄ
wszystkie atrybut klasy :class:`!C`, które "
"odnoszÄ
siÄ do obiektów funkcja, a w konsekwencji wszystkie sÄ
metodami "
"instancji :class:`!C` --- ``h`` jest dokÅadnie równoważne ``g``. Zauważ, że "
"ta praktyka zwykle sÅuży jedynie do zmylenia czytelnika programu."
msgid ""
"Methods may call other methods by using method attributes of the ``self`` "
"argument::"
msgstr ""
"Metody mogÄ
wywoÅywaÄ inne metody przy użyciu metody atrybut z ``self`` "
"argument ::"
msgid ""
"class Bag:\n"
" def __init__(self):\n"
" self.data = []\n"
"\n"
" def add(self, x):\n"
" self.data.append(x)\n"
"\n"
" def addtwice(self, x):\n"
" self.add(x)\n"
" self.add(x)"
msgstr ""
"class Torba:\n"
" def __init__(self):\n"
" self.dane = []\n"
"\n"
" def dodac(self, x):\n"
" self.dane.append(x)\n"
"\n"
" def  dodacDwaRazy(self, x):\n"
" self.dodac(x)\n"
" self.dodac(x)"
msgid ""
"Methods may reference global names in the same way as ordinary functions. "
"The global scope associated with a method is the module containing its "
"definition. (A class is never used as a global scope.) While one rarely "
"encounters a good reason for using global data in a method, there are many "
"legitimate uses of the global scope: for one thing, functions and modules "
"imported into the global scope can be used by methods, as well as functions "
"and classes defined in it. Usually, the class containing the method is "
"itself defined in this global scope, and in the next section we'll find some "
"good reasons why a method would want to reference its own class."
msgstr ""
"Metody mogÄ
odwoÅywaÄ siÄ do nazw globalnych w taki sam sposób jak zwykÅe "
"funkcje. Zakres globalny powiÄ
zany z metodÄ
to moduÅ zawierajÄ
cy jej "
"definicjÄ. (Klasa nigdy nie jest używana jako zakres globalny.) Podczas gdy "
"rzadko można napotkaÄ dobry powód do używania danych globalnych w metodzie, "
"istnieje wiele uzasadnionych zastosowaÅ zakresu globalnego: po pierwsze, "
"funkcja i moduÅ importowane do zakresu globalnego mogÄ
byÄ używane przez "
"metody, a także funkcja i klasy w nim zdefiniowane. Zazwyczaj klasa "
"zawierajÄ
ca metodÄ sama jest zdefiniowana w tym globalnym zakresie, a w "
"nastÄpnej sekcji znajdziemy kilka dobrych powodów, dla których metoda "
"chciaÅaby odwoÅywaÄ siÄ do wÅasnej klasy."
msgid ""
"Each value is an object, and therefore has a *class* (also called its "
"*type*). It is stored as ``object.__class__``."
msgstr ""
"Każda wartoÅÄ jest obiektem, a zatem ma *klasÄ* (zwanÄ
również *typem*). "
"Jest ona przechowywana jako ``object.__class__``."
msgid "Inheritance"
msgstr "Dziedziczenie"
msgid ""
"Of course, a language feature would not be worthy of the name \"class\" "
"without supporting inheritance. The syntax for a derived class definition "
"looks like this::"
msgstr ""
"OczywiÅcie funkcja jÄzykowa nie byÅaby godna nazwy \"klasa\" bez obsÅugi "
"dziedziczenia. SkÅadnia pochodnej definicja klasy wyglÄ
da tak::"
msgid ""
"class DerivedClassName(BaseClassName):\n"
" \n"
" .\n"
" .\n"
" .\n"
" "
msgstr ""
"class DerivedClassName(BaseClassName):\n"
" \n"
" .\n"
" .\n"
" .\n"
" "
msgid ""
"The name :class:`!BaseClassName` must be defined in a namespace accessible "
"from the scope containing the derived class definition. In place of a base "
"class name, other arbitrary expressions are also allowed. This can be "
"useful, for example, when the base class is defined in another module::"
msgstr ""
"Nazwa :class:`!BaseClassName` musi byÄ zdefiniowana w przestrzeni nazw "
"dostÄpnej z zakresu zawierajÄ
cego pochodnÄ
definicja klasy. Zamiast nazwy "
"klasa bazowa dozwolone sÄ
również inne dowolne wyrażenia. Może to byÄ "
"przydatne, na przykÅad, gdy klasa bazowa jest zdefiniowany w innym moduÅ::"
msgid "class DerivedClassName(modname.BaseClassName):"
msgstr "class DerivedClassName(modname.BaseClassName):"
msgid ""
"Execution of a derived class definition proceeds the same as for a base "
"class. When the class object is constructed, the base class is remembered. "
"This is used for resolving attribute references: if a requested attribute is "
"not found in the class, the search proceeds to look in the base class. This "
"rule is applied recursively if the base class itself is derived from some "
"other class."
msgstr ""
"Wykonanie pochodnej definicja klasy przebiega tak samo, jak w przypadku "
"klasa bazowa. Gdy konstruowany jest obiekt klasy, zapamiÄtywany jest klasa "
"bazowa. Jest to wykorzystywane do rozwiÄ
zywania referencji atrybut: jeÅli "
"żÄ
dany atrybut nie zostanie znaleziony w klasie, wyszukiwanie jest "
"kontynuowane w klasie bazowej. Ta reguÅa jest stosowana rekurencyjnie, jeÅli "
"sama klasa bazowa jest pochodnÄ
innej klasy."
msgid ""
"There's nothing special about instantiation of derived classes: "
"``DerivedClassName()`` creates a new instance of the class. Method "
"references are resolved as follows: the corresponding class attribute is "
"searched, descending down the chain of base classes if necessary, and the "
"method reference is valid if this yields a function object."
msgstr ""
"Nie ma nic specjalnego w instancjonowaniu klas pochodnych: "
"``DerivedClassName()`` tworzy nowÄ
instancjÄ klasy. Odniesienia do metod sÄ
"
"rozwiÄ
zywane w nastÄpujÄ
cy sposób: odpowiednia klasa atrybut jest "
"przeszukiwana, w razie potrzeby schodzÄ
c w dóŠÅaÅcucha klas bazowych, a "
"odniesienie do metody jest ważne, jeÅli daje to obiekt funkcja."
msgid ""
"Derived classes may override methods of their base classes. Because methods "
"have no special privileges when calling other methods of the same object, a "
"method of a base class that calls another method defined in the same base "
"class may end up calling a method of a derived class that overrides it. "
"(For C++ programmers: all methods in Python are effectively ``virtual``.)"
msgstr ""
"Klasy pochodne mogÄ
nadpisywaÄ metody swoich klas bazowych. Ponieważ metody "
"nie majÄ
specjalnych przywilejów podczas wywoÅywania innych metod tego "
"samego obiektu, metoda klasa bazowa, która wywoÅuje innÄ
metodÄ zdefiniowanÄ
"
"w tym samym klasa bazowa może skoÅczyÄ siÄ wywoÅaniem metody klasy "
"pochodnej, która jÄ
nadpisuje. (Dla programistów C++: wszystkie metody w "
"Python sÄ
efektywnie ``virtual``)."
msgid ""
"An overriding method in a derived class may in fact want to extend rather "
"than simply replace the base class method of the same name. There is a "
"simple way to call the base class method directly: just call ``BaseClassName."
"methodname(self, arguments)``. This is occasionally useful to clients as "
"well. (Note that this only works if the base class is accessible as "
"``BaseClassName`` in the global scope.)"
msgstr ""
"Metoda nadrzÄdna w klasie pochodnej może w rzeczywistoÅci chcieÄ rozszerzyÄ, "
"a nie tylko zastÄ
piÄ metodÄ klasa bazowa o tej samej nazwie. Istnieje prosty "
"sposób na bezpoÅrednie wywoÅanie metody klasa bazowa: wystarczy wywoÅaÄ "
"``BaseClassName.methodname(self, arguments)``. Jest to czasami przydatne "
"również dla klientów. (Należy pamiÄtaÄ, że dziaÅa to tylko wtedy, gdy klasa "
"bazowa jest dostÄpna jako ``BaseClassName`` w zakresie globalnym)."
msgid "Python has two built-in functions that work with inheritance:"
msgstr "Python ma dwa wbudowane funkcje, które pracuja z dziedziczeniem:"
msgid ""
"Use :func:`isinstance` to check an instance's type: ``isinstance(obj, int)`` "
"will be ``True`` only if ``obj.__class__`` is :class:`int` or some class "
"derived from :class:`int`."
msgstr ""
"Użyj :func:`isinstance` do sprawdzenia typu instancji: ``isinstance(obj, "
"int)`` bÄdzie ``True`` tylko wtedy, gdy ``obj.__class__`` jest :class:`int` "
"lub jakÄ
Å klasÄ
pochodnÄ
od :class:`int`."
msgid ""
"Use :func:`issubclass` to check class inheritance: ``issubclass(bool, int)`` "
"is ``True`` since :class:`bool` is a subclass of :class:`int`. However, "
"``issubclass(float, int)`` is ``False`` since :class:`float` is not a "
"subclass of :class:`int`."
msgstr ""
"Użyj :func:`issubclass` do sprawdzenia dziedziczenia klas: "
"``issubclass(bool, int)`` jest ``True``, ponieważ :class:`bool` jest "
"podklasa z :class:`int`. Jednak ``issubclass(float, int)`` jest ``False``, "
"ponieważ :class:`float` nie jest podklasa z :class:`int`."
msgid "Multiple Inheritance"
msgstr "Dziedziczenie wielokrotne"
msgid ""
"Python supports a form of multiple inheritance as well. A class definition "
"with multiple base classes looks like this::"
msgstr ""
"Python obsÅuguje również dziedziczenie wielokrotne. Strona definicja klasy "
"z wieloma klasami bazowymi wyglÄ
da tak::"
msgid ""
"class DerivedClassName(Base1, Base2, Base3):\n"
" \n"
" .\n"
" .\n"
" .\n"
" "
msgstr ""
"class NazwaKlasyPochodnej(Baza1, Baza2, Baza3):\n"
" \n"
" .\n"
" .\n"
" .\n"
" "
msgid ""
"For most purposes, in the simplest cases, you can think of the search for "
"attributes inherited from a parent class as depth-first, left-to-right, not "
"searching twice in the same class where there is an overlap in the "
"hierarchy. Thus, if an attribute is not found in :class:`!DerivedClassName`, "
"it is searched for in :class:`!Base1`, then (recursively) in the base "
"classes of :class:`!Base1`, and if it was not found there, it was searched "
"for in :class:`!Base2`, and so on."
msgstr ""
"Dla wiÄkszoÅci celów, w najprostszych przypadkach, można myÅleÄ o "
"wyszukiwaniu atrybut odziedziczonym po klasie nadrzÄdnej jako o wyszukiwaniu "
"w gÅÄ
b, od lewej do prawej, nie szukajÄ
c dwa razy w tej samej klasie, gdy "
"hierarchia siÄ pokrywa. Tak wiÄc, jeÅli atrybut nie zostanie znaleziony w :"
"class:`!DerivedClassName`, jest szukany w :class:`!Base1`, a nastÄpnie "
"(rekurencyjnie) w klasach bazowych :class:`!Base1`, a jeÅli nie zostanie tam "
"znaleziony, jest szukany w :class:`!Base2` i tak dalej."
msgid ""
"In fact, it is slightly more complex than that; the method resolution order "
"changes dynamically to support cooperative calls to :func:`super`. This "
"approach is known in some other multiple-inheritance languages as call-next-"
"method and is more powerful than the super call found in single-inheritance "
"languages."
msgstr ""
"W rzeczywistoÅci jest to nieco bardziej skomplikowane; kolejnoÅÄ "
"rozwiÄ
zywania metod zmienia siÄ dynamicznie, aby wspieraÄ kooperacyjne "
"wywoÅania :func:`super`. PodejÅcie to jest znane w niektórych innych "
"jÄzykach wielokrotnego dziedziczenia jako call-next-method i jest bardziej "
"wydajne niż super wywoÅanie wystÄpujÄ
ce w jÄzykach pojedynczego "
"dziedziczenia."
msgid ""
"Dynamic ordering is necessary because all cases of multiple inheritance "
"exhibit one or more diamond relationships (where at least one of the parent "
"classes can be accessed through multiple paths from the bottommost class). "
"For example, all classes inherit from :class:`object`, so any case of "
"multiple inheritance provides more than one path to reach :class:`object`. "
"To keep the base classes from being accessed more than once, the dynamic "
"algorithm linearizes the search order in a way that preserves the left-to-"
"right ordering specified in each class, that calls each parent only once, "
"and that is monotonic (meaning that a class can be subclassed without "
"affecting the precedence order of its parents). Taken together, these "
"properties make it possible to design reliable and extensible classes with "
"multiple inheritance. For more detail, see :ref:`python_2.3_mro`."
msgstr ""
"Dynamiczne porzÄ
dkowanie jest konieczne, ponieważ wszystkie przypadki "
"wielokrotnego dziedziczenia wykazujÄ
jednÄ
lub wiÄcej relacji diamentowych "
"(w których co najmniej jedna z klas nadrzÄdnych może byÄ dostÄpna poprzez "
"wiele Åcieżek z najniższej klasy). Na przykÅad, wszystkie klasy dziedziczÄ
"
"z :class:`object`, wiÄc każdy przypadek wielokrotnego dziedziczenia zapewnia "
"wiÄcej niż jednÄ
ÅcieżkÄ dostÄpu do :class:`object`. Aby zapobiec "
"wielokrotnemu dostÄpowi do klas bazowych, algorytm dynamiczny linearyzuje "
"kolejnoÅÄ wyszukiwania w sposób, który zachowuje kolejnoÅÄ od lewej do "
"prawej okreÅlonÄ
w każdej klasie, która wywoÅuje każdego rodzica tylko raz i "
"która jest monotoniczna (co oznacza, że klasa może byÄ podklasowana bez "
"wpÅywu na kolejnoÅÄ pierwszeÅstwa jej rodziców). ÅÄ
cznie wÅaÅciwoÅci te "
"umożliwiajÄ
projektowanie niezawodnych i rozszerzalnych klas z wielokrotnym "
"dziedziczeniem. WiÄcej szczegóÅów można znaleÅºÄ na stronie :ref:"
"`python_2.3_mro`."
msgid "Private Variables"
msgstr "Zmienne prywatne"
msgid ""
"\"Private\" instance variables that cannot be accessed except from inside an "
"object don't exist in Python. However, there is a convention that is "
"followed by most Python code: a name prefixed with an underscore (e.g. "
"``_spam``) should be treated as a non-public part of the API (whether it is "
"a function, a method or a data member). It should be considered an "
"implementation detail and subject to change without notice."
msgstr ""
"\"Prywatne\" zmienne instancje, do których nie można uzyskaÄ dostÄpu inaczej "
"niż z wnÄtrza obiektu, nie istniejÄ
w Python. Istnieje jednak konwencja, "
"której przestrzega wiÄkszoÅÄ kodu Python: nazwa poprzedzona podkreÅleniem "
"(np. ``_spam``) powinna byÄ traktowana jako niepubliczna czÄÅÄ API "
"(niezależnie od tego, czy jest to funkcja, metoda czy czÅonek danych). "
"Należy jÄ
traktowaÄ jako szczegóŠimplementacji i może ona ulec zmianie bez "
"powiadomienia."
msgid ""
"Since there is a valid use-case for class-private members (namely to avoid "
"name clashes of names with names defined by subclasses), there is limited "
"support for such a mechanism, called :dfn:`name mangling`. Any identifier "
"of the form ``__spam`` (at least two leading underscores, at most one "
"trailing underscore) is textually replaced with ``_classname__spam``, where "
"``classname`` is the current class name with leading underscore(s) "
"stripped. This mangling is done without regard to the syntactic position of "
"the identifier, as long as it occurs within the definition of a class."
msgstr ""
"Ponieważ istnieje uzasadniony przypadek użycia dla czÅonków klasy-prywatnej "
"(mianowicie, aby uniknÄ
Ä kolizji nazw z nazwami zdefiniowanymi przez "
"podklasa), istnieje ograniczone wsparcie dla takiego mechanizmu, zwanego :"
"dfn:`name mangling`. Każdy identyfikator w postaci ``__spam`` (co najmniej "
"dwa poczÄ
tkowe podkreÅlenia, co najwyżej jedno koÅcowe podkreÅlenie) jest "
"tekstowo zastÄpowany przez ``_classname__spam``, gdzie ``classname`` jest "
"bieżÄ
cÄ
nazwÄ
klasy z usuniÄtymi poczÄ
tkowymi podkreÅleniami. Zamiana ta "
"jest wykonywana bez wzglÄdu na pozycjÄ skÅadniowÄ
identyfikatora, o ile "
"wystÄpuje on w definicji klasy."
msgid ""
"The :ref:`private name mangling specifications ` for "
"details and special cases."
msgstr ""
"SzczegóÅowe informacje i przypadki specjalne znajdujÄ
siÄ w specyfikacji :"
"ref:`private name mangling `."
msgid ""
"Name mangling is helpful for letting subclasses override methods without "
"breaking intraclass method calls. For example::"
msgstr ""
"Manipulowanie nazwami jest pomocne w umożliwieniu podklasa nadpisywania "
"metod bez przerywania wywoÅaÅ metod wewnÄ
trzklasowych. Na przykÅad::"
msgid ""
"class Mapping:\n"
" def __init__(self, iterable):\n"
" self.items_list = []\n"
" self.__update(iterable)\n"
"\n"
" def update(self, iterable):\n"
" for item in iterable:\n"
" self.items_list.append(item)\n"
"\n"
" __update = update # private copy of original update() method\n"
"\n"
"class MappingSubclass(Mapping):\n"
"\n"
" def update(self, keys, values):\n"
" # provides new signature for update()\n"
" # but does not break __init__()\n"
" for item in zip(keys, values):\n"
" self.items_list.append(item)"
msgstr ""
"class Mapping:\n"
" def __init__(self, iterable):\n"
" self.przedmiot_lista = []\n"
" self.__update(iterable)\n"
"\n"
" def update(self, iterable):\n"
" for przedmiot in iterable:\n"
" self.przedmiot_lista.append(przedmiot)\n"
"\n"
" __update = update # prywatna kopia oryginalnej metody update()\n"
"\n"
"class MappingSubklasa(Mapping):\n"
"\n"
" def update(self, keys, values):\n"
" # zapewnia nowÄ
sygnaturÄ dla update()\n"
" # ale nie przerywa __init__()\n"
" for item in zip(keys, values):\n"
" self.items_list.append(item)"
msgid ""
"The above example would work even if ``MappingSubclass`` were to introduce a "
"``__update`` identifier since it is replaced with ``_Mapping__update`` in "
"the ``Mapping`` class and ``_MappingSubclass__update`` in the "
"``MappingSubclass`` class respectively."
msgstr ""
"Powyższy przykÅad zadziaÅa nawet wtedy, gdy ``MappingSubclass`` wprowadzi "
"identyfikator ``__update``, ponieważ zostanie on zastÄ
piony odpowiednio "
"``_Mapping__update`` w klasie ``Mapping`` i ``_MappingSubclass__update`` w "
"klasie ``MappingSubclass``."
msgid ""
"Note that the mangling rules are designed mostly to avoid accidents; it "
"still is possible to access or modify a variable that is considered "
"private. This can even be useful in special circumstances, such as in the "
"debugger."
msgstr ""
"Należy pamiÄtaÄ, że reguÅy mieszania zostaÅy zaprojektowane gÅównie w celu "
"unikniÄcia wypadków; nadal możliwy jest dostÄp lub modyfikacja zmiennej, "
"która jest uważana za prywatnÄ
. Może to byÄ nawet przydatne w szczególnych "
"okolicznoÅciach, takich jak debugger."
msgid ""
"Notice that code passed to ``exec()`` or ``eval()`` does not consider the "
"classname of the invoking class to be the current class; this is similar to "
"the effect of the ``global`` statement, the effect of which is likewise "
"restricted to code that is byte-compiled together. The same restriction "
"applies to ``getattr()``, ``setattr()`` and ``delattr()``, as well as when "
"referencing ``__dict__`` directly."
msgstr ""
"Zauważ, że kod przekazany do ``exec()`` lub ``eval()`` nie uważa nazwy klasy "
"wywoÅujÄ
cej za bieżÄ
cÄ
klasÄ; jest to podobne do efektu ``global`` "
"instrukcja , którego efekt jest również ograniczony do kodu, który jest "
"kompilowany bajtowo. To samo ograniczenie dotyczy ``getattr()``, "
"``setattr()`` i ``delattr()``, a także bezpoÅredniego odwoÅywania siÄ do "
"``__dict__``."
msgid "Odds and Ends"
msgstr "Przypadki losowe"
msgid ""
"Sometimes it is useful to have a data type similar to the Pascal \"record\" "
"or C \"struct\", bundling together a few named data items. The idiomatic "
"approach is to use :mod:`dataclasses` for this purpose::"
msgstr ""
"Czasami przydatne jest posiadanie typu danych podobnego do \"rekordu\" "
"Pascala lub \"struktury\" C, ÅÄ
czÄ
cego kilka nazwanych elementów danych. "
"Idiomatycznym podejÅciem jest użycie w tym celu :mod:`dataclasses`::"
msgid ""
"from dataclasses import dataclass\n"
"\n"
"@dataclass\n"
"class Employee:\n"
" name: str\n"
" dept: str\n"
" salary: int"
msgstr ""
"from dataclasses import dataclass\n"
"\n"
"@dataclass\n"
"class Pracownik:\n"
" imie: str\n"
" dzial: str\n"
" pensja: int"
msgid ""
">>> john = Employee('john', 'computer lab', 1000)\n"
">>> john.dept\n"
"'computer lab'\n"
">>> john.salary\n"
"1000"
msgstr ""
">>> stanislaw = Pracownik('stanislaw', 'pracownia komputerowa, 1000)\n"
">>> stanislaw.dzial\n"
"'pracownia komputerowa'\n"
">>> stanislaw.pensja\n"
"1000"
msgid ""
"A piece of Python code that expects a particular abstract data type can "
"often be passed a class that emulates the methods of that data type "
"instead. For instance, if you have a function that formats some data from a "
"file object, you can define a class with methods :meth:`~io.TextIOBase.read` "
"and :meth:`~io.TextIOBase.readline` that get the data from a string buffer "
"instead, and pass it as an argument."
msgstr ""
"Fragment kodu Python, który oczekuje okreÅlonego abstrakcyjnego typu danych, "
"może czÄsto zostaÄ przekazany klasie, która emuluje metody tego typu "
"danych. Na przykÅad, jeÅli masz klasÄ funkcja, która formatuje pewne dane z "
"obiektu pliku, możesz zdefiniowaÄ klasÄ z metodami :meth:`~io.TextIOBase."
"read` i :meth:`~io.TextIOBase.readline`, które pobierajÄ
dane z bufora napis "
"i przekazujÄ
je jako argument."
msgid ""
":ref:`Instance method objects ` have attributes, too: :"
"attr:`m.__self__ ` is the instance object with the method :"
"meth:`!m`, and :attr:`m.__func__ ` is the :ref:`function "
"object ` corresponding to the method."
msgstr ""
":ref:`Obiekty metod instancji ` także majÄ
atrybuty: :attr:"
"`m.__self__ ` jest obiektem instancji z metodÄ
:meth:`!m`, "
"i :attr:`m.__func__ ` jest :ref:`obiektem funkcji ` odpowiadajÄ
cym metodzie."
msgid "Iterators"
msgstr "Iteratory"
msgid ""
"By now you have probably noticed that most container objects can be looped "
"over using a :keyword:`for` statement::"
msgstr ""
"Prawdopodobnie zauważyÅeÅ już, że wiÄkszoÅÄ obiektów kontenera można "
"iterowaÄ za pomocÄ
:keyword:`for` instrukcja ::"
msgid ""
"for element in [1, 2, 3]:\n"
" print(element)\n"
"for element in (1, 2, 3):\n"
" print(element)\n"
"for key in {'one':1, 'two':2}:\n"
" print(key)\n"
"for char in \"123\":\n"
" print(char)\n"
"for line in open(\"myfile.txt\"):\n"
" print(line, end='')"
msgstr ""
"for element in [1, 2, 3]:\n"
" print(element)\n"
"for element in (1, 2, 3):\n"
" print(element)\n"
"for key in {'one':1, 'two':2}:\n"
" print(key)\n"
"for char in \"123\":\n"
" print(char)\n"
"for line in open(\"mojplik.txt\"):\n"
" print(line, end='')"
msgid ""
"This style of access is clear, concise, and convenient. The use of "
"iterators pervades and unifies Python. Behind the scenes, the :keyword:"
"`for` statement calls :func:`iter` on the container object. The function "
"returns an iterator object that defines the method :meth:`~iterator."
"__next__` which accesses elements in the container one at a time. When "
"there are no more elements, :meth:`~iterator.__next__` raises a :exc:"
"`StopIteration` exception which tells the :keyword:`!for` loop to "
"terminate. You can call the :meth:`~iterator.__next__` method using the :"
"func:`next` built-in function; this example shows how it all works::"
msgstr ""
"Ten styl dostÄpu jest jasny, zwiÄzÅy i wygodny. Użycie iterators przenika i "
"ujednolica Python. Za kulisami, :keyword:`for` instrukcja wywoÅuje :func:"
"`iter` na obiekcie kontenera. Obiekt funkcja zwracaÄ i iterator definiujÄ
"
"metodÄ :meth:`~iterator.__next__`, która uzyskuje dostÄp do elementów w "
"kontenerze jeden po drugim. Gdy nie ma wiÄcej elementów, :meth:`~iterator."
"__next__` rzuciÄ wyjÄ
tek :exc:`StopIteration`, który informuje pÄtlÄ :"
"keyword:`!for` o zakoÅczeniu. MetodÄ :meth:`~iterator.__next__` można "
"wywoÅaÄ za pomocÄ
:func:`next` wbudowanej funkcja; ten przykÅad pokazuje, "
"jak to wszystko dziaÅa::"
msgid ""
">>> s = 'abc'\n"
">>> it = iter(s)\n"
">>> it\n"
"\n"
">>> next(it)\n"
"'a'\n"
">>> next(it)\n"
"'b'\n"
">>> next(it)\n"
"'c'\n"
">>> next(it)\n"
"Traceback (most recent call last):\n"
" File \"\", line 1, in \n"
" next(it)\n"
"StopIteration"
msgstr ""
">>> s = 'abc'\n"
">>> it = iter(s)\n"
">>> it\n"
"\n"
">>> next(it)\n"
"'a'\n"
">>> next(it)\n"
"'b'\n"
">>> next(it)\n"
"'c'\n"
">>> next(it)\n"
"Traceback (most recent call last):\n"
" File \"\", line 1, in \n"
" next(it)\n"
"StopIteration"
msgid ""
"Having seen the mechanics behind the iterator protocol, it is easy to add "
"iterator behavior to your classes. Define an :meth:`~container.__iter__` "
"method which returns an object with a :meth:`~iterator.__next__` method. If "
"the class defines :meth:`!__next__`, then :meth:`!__iter__` can just return "
"``self``::"
msgstr ""
"Po zapoznaniu siÄ z mechanikÄ
stojÄ
cÄ
za protokoÅem iterator, Åatwo jest "
"dodaÄ iterator zachowanie do swoich klas. Zdefiniuj metodÄ :meth:"
"`~container.__iter__`, która zwracaÄ obiekt z metodÄ
:meth:`~iterator."
"__next__`. JeÅli klasa definiuje :meth:`!__next__`, to :meth:`!__iter__` "
"może po prostu zwracaÄ ``self`` ::"
msgid ""
"class Reverse:\n"
" \"\"\"Iterator for looping over a sequence backwards.\"\"\"\n"
" def __init__(self, data):\n"
" self.data = data\n"
" self.index = len(data)\n"
"\n"
" def __iter__(self):\n"
" return self\n"
"\n"
" def __next__(self):\n"
" if self.index == 0:\n"
" raise StopIteration\n"
" self.index = self.index - 1\n"
" return self.data[self.index]"
msgstr ""
"class Reverse:\n"
" \"\"\"iterator do zapÄtlania sekwencji wstecz. \"\"\"\n"
" def __init__(self, dane):\n"
" self.dane = dane\n"
" self.indeks = len(dane)\n"
"\n"
" def __iter__(self):\n"
" return self\n"
"\n"
" def __next__(self):\n"
" if self.indeks == 0:\n"
" raise StopIteration\n"
" self.indeks = self.indeks - 1\n"
" return self.data[self.indeks]"
msgid ""
">>> rev = Reverse('spam')\n"
">>> iter(rev)\n"
"<__main__.Reverse object at 0x00A1DB50>\n"
">>> for char in rev:\n"
"... print(char)\n"
"...\n"
"m\n"
"a\n"
"p\n"
"s"
msgstr ""
">>> rev = Reverse('spam')\n"
">>> iter(rev)\n"
"<__main__.Reverse object at 0x00A1DB50>\n"
">>> for char in rev:\n"
"... print(char)\n"
"...\n"
"m\n"
"a\n"
"p\n"
"s"
msgid "Generators"
msgstr "Generatory"
msgid ""
":term:`Generators ` are a simple and powerful tool for creating "
"iterators. They are written like regular functions but use the :keyword:"
"`yield` statement whenever they want to return data. Each time :func:`next` "
"is called on it, the generator resumes where it left off (it remembers all "
"the data values and which statement was last executed). An example shows "
"that generators can be trivially easy to create::"
msgstr ""
":term:`Generatory ` sÄ
prostym i potÄżnym narzÄdziem do tworzenia "
"iteratorów. SÄ
one pisane jak zwykÅe funkcje, ale używajÄ
instrukcji :"
"keyword:`yield` za każdym razem, gdy chcÄ
zwracaÄ dane. Za każdym razem, "
"gdy :func:`next` jest na nim wywoÅywany, generator wznawia dziaÅanie od "
"miejsca, w którym zostaÅo przerwane (pamiÄta wszystkie wartoÅci danych i "
"które instrukcje byÅo ostatnio wykonywane). PrzykÅad pokazuje, że tworzenie "
"generatorów może byÄ banalnie proste::"
msgid ""
"def reverse(data):\n"
" for index in range(len(data)-1, -1, -1):\n"
" yield data[index]"
msgstr ""
"def reverse(dane):\n"
" for indeks in range(len(dane)-1, -1, -1):\n"
" yield dane[indeks]"
msgid ""
">>> for char in reverse('golf'):\n"
"... print(char)\n"
"...\n"
"f\n"
"l\n"
"o\n"
"g"
msgstr ""
">>> for char in reverse('golf'):\n"
"... print(char)\n"
"...\n"
"f\n"
"l\n"
"o\n"
"g"
msgid ""
"Anything that can be done with generators can also be done with class-based "
"iterators as described in the previous section. What makes generators so "
"compact is that the :meth:`~iterator.__iter__` and :meth:`~generator."
"__next__` methods are created automatically."
msgstr ""
"Wszystko, co można zrobiÄ za pomocÄ
generatorów, można również zrobiÄ za "
"pomocÄ
iteratorów opartych na klasach, jak opisano w poprzedniej sekcji. "
"KompaktowoÅÄ generatorów polega na tym, że metody :meth:`~iterator.__iter__` "
"i :meth:`~generator.__next__` sÄ
tworzone automatycznie."
msgid ""
"Another key feature is that the local variables and execution state are "
"automatically saved between calls. This made the function easier to write "
"and much more clear than an approach using instance variables like ``self."
"index`` and ``self.data``."
msgstr ""
"InnÄ
kluczowÄ
cechÄ
jest to, że zmienne lokalne i stan wykonania sÄ
"
"automatycznie zapisywane miÄdzy wywoÅaniami. Sprawia to, że funkcja jest "
"Åatwiejszy do napisania i znacznie bardziej przejrzysty niż podejÅcie "
"wykorzystujÄ
ce zmienne instancji, takie jak ``self.index`` i ``self.data``."
msgid ""
"In addition to automatic method creation and saving program state, when "
"generators terminate, they automatically raise :exc:`StopIteration`. In "
"combination, these features make it easy to create iterators with no more "
"effort than writing a regular function."
msgstr ""
"Oprócz automatycznego tworzenia metod i zapisywania stanu programu, po "
"zakoÅczeniu generatory automatycznie rzuciÄ :exc:`StopIteration` . W "
"poÅÄ
czeniu, funkcje te uÅatwiajÄ
tworzenie iteratorów bez wiÄkszego wysiÅku "
"niż napisanie zwykÅego funkcja."
msgid "Generator Expressions"
msgstr "generator wyrażenia"
msgid ""
"Some simple generators can be coded succinctly as expressions using a syntax "
"similar to list comprehensions but with parentheses instead of square "
"brackets. These expressions are designed for situations where the generator "
"is used right away by an enclosing function. Generator expressions are more "
"compact but less versatile than full generator definitions and tend to be "
"more memory friendly than equivalent list comprehensions."
msgstr ""
"Niektóre proste generatory mogÄ
byÄ kodowane w zwiÄzÅy sposób jako wyrażenia "
"przy użyciu skÅadni podobnej do list comprehensions, ale z nawiasami zamiast "
"nawiasów kwadratowych. Wyrażenia te sÄ
przeznaczone do sytuacji, w których "
"generator jest używane od razu przez otaczajÄ
cÄ
je funkcja. Wyrażenia "
"generator sÄ
bardziej zwiÄzÅe, ale mniej wszechstronne niż peÅne definicje "
"generator i zwykle sÄ
bardziej przyjazne dla pamiÄci niż równoważne "
"wyrażenia listowe."
msgid "Examples::"
msgstr "PrzykÅady::"
msgid ""
">>> sum(i*i for i in range(10)) # sum of squares\n"
"285\n"
"\n"
">>> xvec = [10, 20, 30]\n"
">>> yvec = [7, 5, 3]\n"
">>> sum(x*y for x,y in zip(xvec, yvec)) # dot product\n"
"260\n"
"\n"
">>> unique_words = set(word for line in page for word in line.split())\n"
"\n"
">>> valedictorian = max((student.gpa, student.name) for student in "
"graduates)\n"
"\n"
">>> data = 'golf'\n"
">>> list(data[i] for i in range(len(data)-1, -1, -1))\n"
"['f', 'l', 'o', 'g']"
msgstr ""
">>> sum(i*i for i in range(10)) # suma kwadratów\n"
"285\n"
"\n"
">>> xvec = [10, 20, 30]\n"
">>> yvec = [7, 5, 3]\n"
">>> sum(x*y for x,y in zip(xvec, yvec)) # iloczyn skalarny\n"
"260\n"
"\n"
">>> unique_words = set(word for line in page for word in line.split())\n"
"\n"
">>> valedictorian = max((student.gpa, student.name) for student in "
"graduates)\n"
"\n"
">>> data = 'golf'\n"
">>> list(data[i] for i in range(len(data)-1, -1, -1))\n"
"['f', 'l', 'o', 'g']"
msgid "Footnotes"
msgstr "Przypisy"
msgid ""
"Except for one thing. Module objects have a secret read-only attribute "
"called :attr:`~object.__dict__` which returns the dictionary used to "
"implement the module's namespace; the name ``__dict__`` is an attribute but "
"not a global name. Obviously, using this violates the abstraction of "
"namespace implementation, and should be restricted to things like post-"
"mortem debuggers."
msgstr ""
"Z wyjÄ
tkiem jednej rzeczy. Obiekty moduÅ majÄ
tajnÄ
tylko do odczytu atrybut "
"o nazwie :attr:`~object.__dict__`, która zwracaÄ sÅownik sÅuży do "
"implementacji przestrzeni nazw moduÅ; nazwa ``__dict__`` jest atrybut, ale "
"nie jest nazwÄ
globalnÄ
. OczywiÅcie korzystanie z tego narusza abstrakcjÄ "
"implementacji przestrzeni nazw i powinno byÄ ograniczone do takich rzeczy, "
"jak debugery post-mortem."
msgid "object"
msgstr "obiekt"
msgid "method"
msgstr "metoda"
msgid "name"
msgstr "nazwa"
msgid "mangling"
msgstr "maglowanie"