<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FProperty</id>
	<title>TI/Property - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FProperty"/>
	<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Property&amp;action=history"/>
	<updated>2026-04-29T08:47:23Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/Property&amp;diff=1804&amp;oldid=prev</id>
		<title>Jarekz: Utworzono nową stronę &quot;Wbudowana funkcja &lt;tt&gt;property&lt;/tt&gt; zwraca specjalny obiekt, który może być użyty jako atrybut. Przy dostepie do tego atrybutu interpreter zachowuje się w szczegól...&quot;</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Property&amp;diff=1804&amp;oldid=prev"/>
		<updated>2015-05-23T10:20:24Z</updated>

		<summary type="html">&lt;p&gt;Utworzono nową stronę &amp;quot;Wbudowana funkcja &amp;lt;tt&amp;gt;property&amp;lt;/tt&amp;gt; zwraca specjalny obiekt, który może być użyty jako atrybut. Przy dostepie do tego atrybutu interpreter zachowuje się w szczegól...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Wbudowana funkcja &amp;lt;tt&amp;gt;property&amp;lt;/tt&amp;gt; zwraca specjalny obiekt, który może być użyty jako atrybut. Przy dostepie do tego atrybutu interpreter zachowuje się w szczególny sposób. Przy odczycie atrybutu nie zwraca obiektu, który jest przypisany pod nazwą atrybutu, lecz wywołuje na nim metodę. Podobnie przy przypisaniu do atrybutu, nie podstawia przypisywanej wartości jako nowej wartości atrybutu tylko wywołuje metodę.&lt;br /&gt;
&lt;br /&gt;
Tak, jak na przykładzie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
class Parrot(object):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self._voltage = 100000&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def voltage(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Get the current voltage.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self._voltage&lt;br /&gt;
&lt;br /&gt;
pa = Parrot()&lt;br /&gt;
print pa.voltage&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Dekoracja za pomocą property, powoduje, że metoda &amp;lt;tt&amp;gt;voltage&amp;lt;/tt&amp;gt; staje się ''getterem'' (czyli zwraca atrybut) dla atrybutu prywatego o tej samej nazwie.&lt;br /&gt;
&lt;br /&gt;
Co dzieje się, gdy chcemy mieć &amp;lt;tt&amp;gt;getter&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;setter&amp;lt;/tt&amp;gt; (ustalenie wartości atrybutu)?&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
class Parrot(object):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self._voltage = 100000&lt;br /&gt;
&lt;br /&gt;
    def _get_voltage(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Get the current voltage.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self._voltage&lt;br /&gt;
&lt;br /&gt;
    def _set_v(self, new_voltage):&lt;br /&gt;
        self._voltage = 2 * new_voltage&lt;br /&gt;
&lt;br /&gt;
    voltage = property(_get_voltage, _set_v)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pa = Parrot()&lt;br /&gt;
print pa.voltage&lt;br /&gt;
&lt;br /&gt;
pa.voltage = 1000&lt;br /&gt;
print pa.voltage&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nie możemy mieć dwóch funkcji o tej samej nazwie, dekorujemy zatem obie funkcje na raz: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;voltage = property(_get_voltage, _set_v)&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
</feed>