{"id":61,"date":"2025-09-24T22:22:23","date_gmt":"2025-09-24T20:22:23","guid":{"rendered":"http:\/\/python-ai.pl\/?p=61"},"modified":"2025-09-24T22:22:23","modified_gmt":"2025-09-24T20:22:23","slug":"programowanie-obiektowe","status":"publish","type":"post","link":"https:\/\/python-ai.pl\/?p=61","title":{"rendered":"Programowanie obiektowe"},"content":{"rendered":"\n<div class=\"wp-block-group has-cyan-bluish-gray-background-color has-background\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\">Programowanie obiektowe w Pythonie<\/h4>\n\n\n\n<p>Programowanie obiektowe (OOP) to paradygmat programowania oparty na koncepcji obiekt\u00f3w, kt\u00f3re zawieraj\u0105 dane i kod.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Klasy i obiekty:<\/h4>\n\n\n\n<p>Klasa to szablon do tworzenia obiekt\u00f3w. Obiekt to instancja klasy.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"# Definiowanie klasy\nclass Dog:\n    def __init__(self, name, age, breed):\n        self.name = name      # Atrybut instancji\n        self.age = age\n        self.breed = breed\n    \n    def bark(self):\n        return f&quot;{self.name} szczeka: Hau! Hau!&quot;\n    \n    def get_info(self):\n        return f&quot;{self.name} to {self.breed} w wieku {self.age} lat&quot;\n    \n    def have_birthday(self):\n        self.age += 1\n        return f&quot;{self.name} ma teraz {self.age} lat!&quot;\n\n# Tworzenie obiekt\u00f3w (instancji klasy)\nmy_dog = Dog(&quot;Burek&quot;, 3, &quot;Owczarek niemiecki&quot;)\nfriend_dog = Dog(&quot;Luna&quot;, 2, &quot;Golden Retriever&quot;)\n\n# U\u017cywanie metod\nprint(my_dog.bark())           # Burek szczeka: Hau! Hau!\nprint(my_dog.get_info())       # Burek to Owczarek niemiecki w wieku 3 lat\nprint(my_dog.have_birthday())  # Burek ma teraz 4 lat!\n\nprint(friend_dog.get_info())   # Luna to Golden Retriever w wieku 2 lat\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\"># Definiowanie klasy<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Dog<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">name<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">age<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">breed<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.name = name      <\/span><span style=\"color: #6A9955\"># Atrybut instancji<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.age = age<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.breed = breed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">bark<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> szczeka: Hau! Hau!&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">get_info<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> to <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.breed<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> w wieku <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.age<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> lat&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">have_birthday<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.age += <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> ma teraz <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.age<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> lat!&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Tworzenie obiekt\u00f3w (instancji klasy)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">my_dog = Dog(<\/span><span style=\"color: #CE9178\">&quot;Burek&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Owczarek niemiecki&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">friend_dog = Dog(<\/span><span style=\"color: #CE9178\">&quot;Luna&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Golden Retriever&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># U\u017cywanie metod<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(my_dog.bark())           <\/span><span style=\"color: #6A9955\"># Burek szczeka: Hau! Hau!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(my_dog.get_info())       <\/span><span style=\"color: #6A9955\"># Burek to Owczarek niemiecki w wieku 3 lat<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(my_dog.have_birthday())  <\/span><span style=\"color: #6A9955\"># Burek ma teraz 4 lat!<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(friend_dog.get_info())   <\/span><span style=\"color: #6A9955\"># Luna to Golden Retriever w wieku 2 lat<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Konstruktor <code>__init__<\/code>:<\/h4>\n\n\n\n<p>Konstruktor jest wywo\u0142ywany automatycznie przy tworzeniu obiektu.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"class Person:\n    def __init__(self, name, age, city):\n        self.name = name\n        self.age = age\n        self.city = city\n        self.friends = []  # Lista przyjaci\u00f3\u0142\n    \n    def add_friend(self, friend):\n        self.friends.append(friend)\n        return f&quot;{friend} zosta\u0142 dodany do przyjaci\u00f3\u0142 {self.name}&quot;\n    \n    def get_friends_count(self):\n        return len(self.friends)\n    \n    def introduce(self):\n        return f&quot;Cze\u015b\u0107! Jestem {self.name}, mam {self.age} lat i mieszkam w {self.city}&quot;\n\n# Tworzenie os\u00f3b\nperson1 = Person(&quot;Jan&quot;, 25, &quot;Warszawa&quot;)\nperson2 = Person(&quot;Anna&quot;, 28, &quot;Krak\u00f3w&quot;)\n\nprint(person1.introduce())  # Cze\u015b\u0107! Jestem Jan, mam 25 lat i mieszkam w Warszawie\nperson1.add_friend(&quot;Anna&quot;)\nprint(person1.get_friends_count())  # 1\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Person<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">name<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">age<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">city<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.name = name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.age = age<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.city = city<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.friends = []  <\/span><span style=\"color: #6A9955\"># Lista przyjaci\u00f3\u0142<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">add_friend<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">friend<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.friends.append(friend)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">friend<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> zosta\u0142 dodany do przyjaci\u00f3\u0142 <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">get_friends_count<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">len<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.friends)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">introduce<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Cze\u015b\u0107! Jestem <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">, mam <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.age<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> lat i mieszkam w <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.city<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Tworzenie os\u00f3b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">person1 = Person(<\/span><span style=\"color: #CE9178\">&quot;Jan&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">25<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Warszawa&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">person2 = Person(<\/span><span style=\"color: #CE9178\">&quot;Anna&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">28<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Krak\u00f3w&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(person1.introduce())  <\/span><span style=\"color: #6A9955\"># Cze\u015b\u0107! Jestem Jan, mam 25 lat i mieszkam w Warszawie<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">person1.add_friend(<\/span><span style=\"color: #CE9178\">&quot;Anna&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(person1.get_friends_count())  <\/span><span style=\"color: #6A9955\"># 1<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Atrybuty klasowe vs instancji:<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"class BankAccount:\n    # Atrybut klasowy - wsp\u00f3lny dla wszystkich instancji\n    bank_name = &quot;Python Bank&quot;\n    interest_rate = 0.05\n    \n    def __init__(self, owner, balance=0):\n        # Atrybuty instancji - unikalne dla ka\u017cdego obiektu\n        self.owner = owner\n        self.balance = balance\n        self.account_number = self._generate_account_number()\n    \n    def _generate_account_number(self):\n        # Metoda prywatna (z podkre\u015bleniem)\n        import random\n        return f&quot;PL{random.randint(100000, 999999)}&quot;\n    \n    def deposit(self, amount):\n        if amount &gt; 0:\n            self.balance += amount\n            return f&quot;Wp\u0142acono {amount} z\u0142. Nowe saldo: {self.balance} z\u0142&quot;\n        else:\n            return &quot;Kwota musi by\u0107 wi\u0119ksza od 0&quot;\n    \n    def withdraw(self, amount):\n        if amount <= self.balance:\n            self.balance -= amount\n            return f&quot;Wyp\u0142acono {amount} z\u0142. Nowe saldo: {self.balance} z\u0142&quot;\n        else:\n            return &quot;Niewystarczaj\u0105ce \u015brodki&quot;\n    \n    def get_interest(self):\n        interest = self.balance * self.interest_rate\n        return f&quot;Oprocentowanie: {interest} z\u0142&quot;\n\n# Tworzenie kont\naccount1 = BankAccount(&quot;Jan Kowalski&quot;, 1000)\naccount2 = BankAccount(&quot;Anna Nowak&quot;, 500)\n\nprint(account1.deposit(500))    # Wp\u0142acono 500 z\u0142. Nowe saldo: 1500 z\u0142\nprint(account1.withdraw(200))   # Wyp\u0142acono 200 z\u0142. Nowe saldo: 1300 z\u0142\nprint(account1.get_interest())  # Oprocentowanie: 65.0 z\u0142\n\n# Dost\u0119p do atrybut\u00f3w klasowych\nprint(BankAccount.bank_name)    # Python Bank\nprint(account1.bank_name)       # Python Bank (mo\u017cna te\u017c przez instancj\u0119)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">BankAccount<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># Atrybut klasowy - wsp\u00f3lny dla wszystkich instancji<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    bank_name = <\/span><span style=\"color: #CE9178\">&quot;Python Bank&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    interest_rate = <\/span><span style=\"color: #B5CEA8\">0.05<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">owner<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">balance<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># Atrybuty instancji - unikalne dla ka\u017cdego obiektu<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.owner = owner<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.balance = balance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.account_number = <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">._generate_account_number()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">_generate_account_number<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># Metoda prywatna (z podkre\u015bleniem)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> random<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;PL<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">random.randint(<\/span><span style=\"color: #B5CEA8\">100000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">999999<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">deposit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">amount<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> amount &gt; <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.balance += amount<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Wp\u0142acono <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">amount<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> z\u0142. Nowe saldo: <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.balance<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> z\u0142&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">else<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Kwota musi by\u0107 wi\u0119ksza od 0&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">withdraw<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">amount<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> amount &lt;= <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.balance:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.balance -= amount<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Wyp\u0142acono <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">amount<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> z\u0142. Nowe saldo: <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.balance<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> z\u0142&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">else<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Niewystarczaj\u0105ce \u015brodki&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">get_interest<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        interest = <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.balance * <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.interest_rate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Oprocentowanie: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">interest<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> z\u0142&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Tworzenie kont<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">account1 = BankAccount(<\/span><span style=\"color: #CE9178\">&quot;Jan Kowalski&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1000<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">account2 = BankAccount(<\/span><span style=\"color: #CE9178\">&quot;Anna Nowak&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">500<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(account1.deposit(<\/span><span style=\"color: #B5CEA8\">500<\/span><span style=\"color: #D4D4D4\">))    <\/span><span style=\"color: #6A9955\"># Wp\u0142acono 500 z\u0142. Nowe saldo: 1500 z\u0142<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(account1.withdraw(<\/span><span style=\"color: #B5CEA8\">200<\/span><span style=\"color: #D4D4D4\">))   <\/span><span style=\"color: #6A9955\"># Wyp\u0142acono 200 z\u0142. Nowe saldo: 1300 z\u0142<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(account1.get_interest())  <\/span><span style=\"color: #6A9955\"># Oprocentowanie: 65.0 z\u0142<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Dost\u0119p do atrybut\u00f3w klasowych<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(BankAccount.bank_name)    <\/span><span style=\"color: #6A9955\"># Python Bank<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(account1.bank_name)       <\/span><span style=\"color: #6A9955\"># Python Bank (mo\u017cna te\u017c przez instancj\u0119)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Dziedziczenie:<\/h4>\n\n\n\n<p>Dziedziczenie pozwala na tworzenie nowych klas na podstawie istniej\u0105cych.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"# Klasa bazowa (rodzic)\nclass Animal:\n    def __init__(self, name, species):\n        self.name = name\n        self.species = species\n    \n    def make_sound(self):\n        return &quot;Jaki\u015b d\u017awi\u0119k&quot;\n    \n    def get_info(self):\n        return f&quot;{self.name} to {self.species}&quot;\n\n# Klasa pochodna (dziecko)\nclass Dog(Animal):\n    def __init__(self, name, breed):\n        super().__init__(name, &quot;pies&quot;)  # Wywo\u0142anie konstruktora rodzica\n        self.breed = breed\n    \n    def make_sound(self):\n        return &quot;Hau! Hau!&quot;\n    \n    def fetch(self):\n        return f&quot;{self.name} przynosi pi\u0142k\u0119&quot;\n\nclass Cat(Animal):\n    def __init__(self, name, color):\n        super().__init__(name, &quot;kot&quot;)\n        self.color = color\n    \n    def make_sound(self):\n        return &quot;Miau! Miau!&quot;\n    \n    def climb(self):\n        return f&quot;{self.name} wspina si\u0119 na drzewo&quot;\n\n# Tworzenie obiekt\u00f3w\ndog = Dog(&quot;Burek&quot;, &quot;Owczarek&quot;)\ncat = Cat(&quot;Mruczek&quot;, &quot;Rudy&quot;)\n\nprint(dog.get_info())      # Burek to pies\nprint(dog.make_sound())    # Hau! Hau!\nprint(dog.fetch())         # Burek przynosi pi\u0142k\u0119\n\nprint(cat.get_info())      # Mruczek to kot\nprint(cat.make_sound())    # Miau! Miau!\nprint(cat.climb())         # Mruczek wspina si\u0119 na drzewo\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\"># Klasa bazowa (rodzic)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Animal<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">name<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">species<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.name = name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.species = species<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">make_sound<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Jaki\u015b d\u017awi\u0119k&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">get_info<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> to <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.species<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Klasa pochodna (dziecko)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Dog<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4EC9B0\">Animal<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">name<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">breed<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #4EC9B0\">super<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(name, <\/span><span style=\"color: #CE9178\">&quot;pies&quot;<\/span><span style=\"color: #D4D4D4\">)  <\/span><span style=\"color: #6A9955\"># Wywo\u0142anie konstruktora rodzica<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.breed = breed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">make_sound<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Hau! Hau!&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">fetch<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> przynosi pi\u0142k\u0119&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Cat<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4EC9B0\">Animal<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">name<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">color<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #4EC9B0\">super<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(name, <\/span><span style=\"color: #CE9178\">&quot;kot&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.color = color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">make_sound<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Miau! Miau!&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">climb<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> wspina si\u0119 na drzewo&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Tworzenie obiekt\u00f3w<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">dog = Dog(<\/span><span style=\"color: #CE9178\">&quot;Burek&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Owczarek&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">cat = Cat(<\/span><span style=\"color: #CE9178\">&quot;Mruczek&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Rudy&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(dog.get_info())      <\/span><span style=\"color: #6A9955\"># Burek to pies<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(dog.make_sound())    <\/span><span style=\"color: #6A9955\"># Hau! Hau!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(dog.fetch())         <\/span><span style=\"color: #6A9955\"># Burek przynosi pi\u0142k\u0119<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(cat.get_info())      <\/span><span style=\"color: #6A9955\"># Mruczek to kot<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(cat.make_sound())    <\/span><span style=\"color: #6A9955\"># Miau! Miau!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(cat.climb())         <\/span><span style=\"color: #6A9955\"># Mruczek wspina si\u0119 na drzewo<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Wielokrotne dziedziczenie:<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"class Flyable:\n    def fly(self):\n        return &quot;Lec\u0119 w powietrzu!&quot;\n\nclass Swimmable:\n    def swim(self):\n        return &quot;P\u0142ywam w wodzie!&quot;\n\nclass Duck(Animal, Flyable, Swimmable):\n    def __init__(self, name):\n        super().__init__(name, &quot;kaczka&quot;)\n    \n    def make_sound(self):\n        return &quot;Kwa! Kwa!&quot;\n    \n    def quack_and_fly(self):\n        return f&quot;{self.make_sound()} {self.fly()}&quot;\n\nduck = Duck(&quot;Kaczuszka&quot;)\nprint(duck.make_sound())       # Kwa! Kwa!\nprint(duck.fly())              # Lec\u0119 w powietrzu!\nprint(duck.swim())             # P\u0142ywam w wodzie!\nprint(duck.quack_and_fly())    # Kwa! Kwa! Lec\u0119 w powietrzu!\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Flyable<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">fly<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Lec\u0119 w powietrzu!&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Swimmable<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">swim<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;P\u0142ywam w wodzie!&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Duck<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4EC9B0\">Animal<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4EC9B0\">Flyable<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4EC9B0\">Swimmable<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">name<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #4EC9B0\">super<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(name, <\/span><span style=\"color: #CE9178\">&quot;kaczka&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">make_sound<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Kwa! Kwa!&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">quack_and_fly<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.make_sound()<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.fly()<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">duck = Duck(<\/span><span style=\"color: #CE9178\">&quot;Kaczuszka&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(duck.make_sound())       <\/span><span style=\"color: #6A9955\"># Kwa! Kwa!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(duck.fly())              <\/span><span style=\"color: #6A9955\"># Lec\u0119 w powietrzu!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(duck.swim())             <\/span><span style=\"color: #6A9955\"># P\u0142ywam w wodzie!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(duck.quack_and_fly())    <\/span><span style=\"color: #6A9955\"># Kwa! Kwa! Lec\u0119 w powietrzu!<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Metody specjalne (magiczne):<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"class Book:\n    def __init__(self, title, author, pages):\n        self.title = title\n        self.author = author\n        self.pages = pages\n    \n    def __str__(self):\n        return f&quot;'{self.title}' autorstwa {self.author}&quot;\n    \n    def __repr__(self):\n        return f&quot;Book('{self.title}', '{self.author}', {self.pages})&quot;\n    \n    def __len__(self):\n        return self.pages\n    \n    def __add__(self, other):\n        if isinstance(other, Book):\n            return Book(f&quot;{self.title} + {other.title}&quot;, \n                       f&quot;{self.author} + {other.author}&quot;, \n                       self.pages + other.pages)\n        return &quot;Nie mo\u017cna doda\u0107 ksi\u0105\u017cki do tego typu obiektu&quot;\n    \n    def __eq__(self, other):\n        if isinstance(other, Book):\n            return (self.title == other.title and \n                   self.author == other.author and \n                   self.pages == other.pages)\n        return False\n\nbook1 = Book(&quot;Python dla pocz\u0105tkuj\u0105cych&quot;, &quot;Jan Kowalski&quot;, 300)\nbook2 = Book(&quot;Zaawansowany Python&quot;, &quot;Anna Nowak&quot;, 400)\n\nprint(str(book1))          # 'Python dla pocz\u0105tkuj\u0105cych' autorstwa Jan Kowalski\nprint(repr(book1))         # Book('Python dla pocz\u0105tkuj\u0105cych', 'Jan Kowalski', 300)\nprint(len(book1))          # 300\nprint(book1 + book2)       # Book('Python dla pocz\u0105tkuj\u0105cych + Zaawansowany Python', 'Jan Kowalski + Anna Nowak', 700)\nprint(book1 == book2)      # False\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Book<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">title<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">author<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">pages<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.title = title<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.author = author<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.pages = pages<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__str__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;&#39;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.title<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&#39; autorstwa <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.author<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__repr__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Book(&#39;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.title<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&#39;, &#39;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.author<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&#39;, <\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.pages<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">)&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__len__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.pages<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__add__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">other<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">isinstance<\/span><span style=\"color: #D4D4D4\">(other, Book):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> Book(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.title<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> + <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">other.title<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                       <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{self<\/span><span style=\"color: #D4D4D4\">.author<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> + <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">other.author<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                       <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.pages + other.pages)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Nie mo\u017cna doda\u0107 ksi\u0105\u017cki do tego typu obiektu&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__eq__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">other<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">isinstance<\/span><span style=\"color: #D4D4D4\">(other, Book):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.title == other.title <\/span><span style=\"color: #569CD6\">and<\/span><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                   <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.author == other.author <\/span><span style=\"color: #569CD6\">and<\/span><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                   <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">.pages == other.pages)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">False<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">book1 = Book(<\/span><span style=\"color: #CE9178\">&quot;Python dla pocz\u0105tkuj\u0105cych&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Jan Kowalski&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">300<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">book2 = Book(<\/span><span style=\"color: #CE9178\">&quot;Zaawansowany Python&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Anna Nowak&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">400<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #D4D4D4\">(book1))          <\/span><span style=\"color: #6A9955\"># &#39;Python dla pocz\u0105tkuj\u0105cych&#39; autorstwa Jan Kowalski<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">repr<\/span><span style=\"color: #D4D4D4\">(book1))         <\/span><span style=\"color: #6A9955\"># Book(&#39;Python dla pocz\u0105tkuj\u0105cych&#39;, &#39;Jan Kowalski&#39;, 300)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">len<\/span><span style=\"color: #D4D4D4\">(book1))          <\/span><span style=\"color: #6A9955\"># 300<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(book1 + book2)       <\/span><span style=\"color: #6A9955\"># Book(&#39;Python dla pocz\u0105tkuj\u0105cych + Zaawansowany Python&#39;, &#39;Jan Kowalski + Anna Nowak&#39;, 700)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(book1 == book2)      <\/span><span style=\"color: #6A9955\"># False<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">W\u0142a\u015bciwo\u015bci (Properties):<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"class Circle:\n    def __init__(self, radius):\n        self._radius = radius  # Atrybut prywatny\n    \n    @property\n    def radius(self):\n        return self._radius\n    \n    @radius.setter\n    def radius(self, value):\n        if value < 0:\n            raise ValueError(&quot;Promie\u0144 nie mo\u017ce by\u0107 ujemny&quot;)\n        self._radius = value\n    \n    @property\n    def area(self):\n        import math\n        return math.pi * self._radius ** 2\n    \n    @property\n    def circumference(self):\n        import math\n        return 2 * math.pi * self._radius\n\ncircle = Circle(5)\nprint(f&quot;Promie\u0144: {circle.radius}&quot;)           # Promie\u0144: 5\nprint(f&quot;Pole: {circle.area:.2f}&quot;)            # Pole: 78.54\nprint(f&quot;Obw\u00f3d: {circle.circumference:.2f}&quot;)  # Obw\u00f3d: 31.42\n\ncircle.radius = 10  # Ustawienie nowego promienia\nprint(f&quot;Nowe pole: {circle.area:.2f}&quot;)       # Nowe pole: 314.16\n\n# circle.radius = -5  # B\u0142\u0105d: Promie\u0144 nie mo\u017ce by\u0107 ujemny\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Circle<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">__init__<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">radius<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">._radius = radius  <\/span><span style=\"color: #6A9955\"># Atrybut prywatny<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">@<\/span><span style=\"color: #4EC9B0\">property<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">radius<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">._radius<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">@radius.setter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">radius<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> value &lt; <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">raise<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">ValueError<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Promie\u0144 nie mo\u017ce by\u0107 ujemny&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">._radius = value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">@<\/span><span style=\"color: #4EC9B0\">property<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">area<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> math<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> math.pi * <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">._radius ** <\/span><span style=\"color: #B5CEA8\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">@<\/span><span style=\"color: #4EC9B0\">property<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">circumference<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">self<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> math<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> * math.pi * <\/span><span style=\"color: #569CD6\">self<\/span><span style=\"color: #D4D4D4\">._radius<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">circle = Circle(<\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Promie\u0144: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">circle.radius<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)           <\/span><span style=\"color: #6A9955\"># Promie\u0144: 5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Pole: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">circle.area<\/span><span style=\"color: #569CD6\">:.2f}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)            <\/span><span style=\"color: #6A9955\"># Pole: 78.54<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Obw\u00f3d: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">circle.circumference<\/span><span style=\"color: #569CD6\">:.2f}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)  <\/span><span style=\"color: #6A9955\"># Obw\u00f3d: 31.42<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">circle.radius = <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Ustawienie nowego promienia<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Nowe pole: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">circle.area<\/span><span style=\"color: #569CD6\">:.2f}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)       <\/span><span style=\"color: #6A9955\"># Nowe pole: 314.16<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># circle.radius = -5  # B\u0142\u0105d: Promie\u0144 nie mo\u017ce by\u0107 ujemny<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Dobre praktyki OOP:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>U\u017cywaj opisowych nazw klas i metod<\/li>\n\n\n\n<li>Zachowaj enkapsulacj\u0119 (ukryj szczeg\u00f3\u0142y implementacji)<\/li>\n\n\n\n<li>U\u017cywaj dziedziczenia do modelowania relacji &#8222;jest&#8221;<\/li>\n\n\n\n<li>Preferuj kompozycj\u0119 nad dziedziczeniem<\/li>\n\n\n\n<li>Dokumentuj swoje klasy i metody<\/li>\n\n\n\n<li>U\u017cywaj w\u0142a\u015bciwo\u015bci zamiast getter\u00f3w\/setter\u00f3w<\/li>\n\n\n\n<li>Implementuj metody specjalne gdy potrzeba<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u0106wiczenie:<\/h4>\n\n\n\n<p>Stw\u00f3rz klas\u0119 Student z atrybutami (imi\u0119, nazwisko, oceny) i metodami (dodaj ocen\u0119, oblicz \u015bredni\u0105, wy\u015bwietl informacje).<\/p>\n\n\n\n<p><\/p>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Programowanie obiektowe w Pythonie Programowanie obiektowe (OOP) to paradygmat programowania oparty na koncepcji obiekt\u00f3w, kt\u00f3re zawieraj\u0105 dane i kod. Klasy i obiekty: Klasa to szablon do tworzenia obiekt\u00f3w. Obiekt to instancja klasy. Konstruktor __init__: Konstruktor jest wywo\u0142ywany automatycznie przy tworzeniu obiektu. Atrybuty klasowe vs instancji: Dziedziczenie: Dziedziczenie pozwala na tworzenie nowych klas na podstawie istniej\u0105cych. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4,3],"tags":[6,26,5],"class_list":["post-61","post","type-post","status-publish","format-standard","hentry","category-kurs","category-python","tag-kurs","tag-programowanie-obiektowe","tag-python"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/posts\/61","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/python-ai.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=61"}],"version-history":[{"count":1,"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/posts\/61\/revisions"}],"predecessor-version":[{"id":62,"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/posts\/61\/revisions\/62"}],"wp:attachment":[{"href":"https:\/\/python-ai.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=61"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/python-ai.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=61"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/python-ai.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}