Python OOPs: Klasa, Obiekt, Dziedziczenie i Konstruktor

⚡ Inteligentne podsumowanie

Programowanie obiektowe w Python Organizuje kod wokół klas i obiektów, grupując powiązane dane i zachowania. To podejście pokazuje, jak definiować klasy, tworzyć obiekty, stosować dziedziczenie i inicjować atrybuty za pomocą konstruktorów.

  • 🔘 Plan zajęć: Klasa grupuje powiązane dane i metody w wielokrotnego użytku plan tworzenia obiektów.
  • Obiekty: Obiekty są instancjami klasy, z których każda przechowuje własne wartości atrybutów.
  • Definiowanie klas: Słowo kluczowe klasy, metody wcięte i parametr self definiują Python class.
  • 🧬 Dziedzictwo: Klasa pochodna dziedziczy atrybuty i metody z klasy bazowej i obsługuje dziedziczenie wielokrotne.
  • 🛠️. Konstruktorzy: Metoda __init__() inicjuje każdy nowy obiekt przy użyciu predefiniowanych wartości.
  • 🤖 Znaczenie sztucznej inteligencji: Biblioteki uczenia maszynowego, takie jak PyTorwarstwy modelu ch i sieci jako Python Klasy.

Python OOPs: Klasa, Obiekt, Dziedziczenie i Konstruktor

OOP w Python

OOP w Python to podejście do programowania, które koncentruje się na używaniu obiektów i klas w taki sam sposób, jak w innych ogólnych językach programowania. Obiektami mogą być dowolne byty ze świata rzeczywistego. Python umożliwia programistom tworzenie aplikacji przy użyciu podejścia OOP, ze szczególnym naciskiem na możliwość ponownego użycia kodu. Tworzenie klas i obiektów jest bardzo łatwe Python.

Co to jest klasa?

Klasa w Python jest logiczną grupąping danych i funkcji. Daje swobodę tworzenia struktur danych zawierających dowolną treść, a zatem łatwo dostępnych.

Na przykład każdy pracownik banku, który chce pobrać dane klienta online, musi przejść do klasa klienta, gdzie wymienione byłyby wszystkie jego atrybuty, takie jak szczegóły transakcji, szczegóły wypłat i wpłat, niespłacone zadłużenie itp.

Jak zdefiniować Python Klasy

Aby zdefiniować klasę, należy wziąć pod uwagę następujące punkty

Krok 1) In Python, klasy są zdefiniowane przez "Klasa" keyword

class myClass():

Krok 2) Wewnątrz klas można definiować funkcje lub metody będące częścią tej klasy

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • Tutaj zdefiniowaliśmy metodę 1, która drukuje „Guru99 ".
  • Inną zdefiniowaną przez nas metodą jest metoda 2, która wypisuje „Testowanie oprogramowania” + SomeString. SomeString jest zmienną dostarczaną przez metodę wywołującą

Krok 3) Wszystko w klasie jest wcięte, podobnie jak kod funkcji, pętli, instrukcji if itp. Wszystko, co nie jest wcięte, nie należy do klasy

określić Python Klasy

UWAGA: O używaniu słowa „self” w Python

  • Argument „self” odnosi się do samego obiektu. Stąd użycie słowa „self”. Zatem w tej metodzie „self” będzie odnosić się do konkretnej instancji tego obiektu, na której wykonywana jest operacja.
  • Self to nazwa preferowana przez konwencję Pythons, aby wskazać pierwszy parametr metod instancji w Python. Jest częścią Python składnia dostępu do elementów obiektów

Krok 4) Aby utworzyć obiekt klasy

c = myClass()

Krok 5) Aby wywołać metodę w klasie

c.method1()
    c.method2(" Testing is fun")
  • Zauważ, że wywołując metodę 1 lub metodę 2, nie musimy podawać słowa kluczowego „self”. Jest to obsługiwane automatycznie przez Python czas wykonywania.
  • Python środowisko wykonawcze przekaże wartość „self”, gdy wywołasz metodę instancji w instancji, niezależnie od tego, czy podasz ją celowo, czy nie
  • Musisz po prostu zwracać uwagę na argumenty nie dotyczące siebie

Krok 6) Oto pełny kod

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  def method2(self,someString):    
      print("Software Testing:" + someString)
  
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()

Jak działa dziedziczenie

Dziedziczenie to funkcja używana w programowaniu obiektowym; odnosi się do zdefiniowania nowej klasy z mniejszą ilością modyfikacji lub bez modyfikacji istniejącej klasy. Nowa klasa nazywa się Klasy pochodnej i od tego, który dziedziczy, nazywa się baza. Python wspiera dziedziczenie; również wspiera wielokrotne dziedziczenie. Klasa może dziedziczyć atrybuty i metody zachowania z innej klasy zwanej podklasą lub klasą dziedziczną.

Jak działa dziedziczenie w Python

Python Składnia dziedziczenia

class DerivedClass(BaseClass):
    body_of_derived_class

Krok 1) Uruchom następujący kod

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print ("childClass Method1")
        
  def method2(self):
        print("childClass method2")     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

Zauważ, że w klasie childClass metoda 1 nie jest zdefiniowana, ale jest dziedziczona z klasy nadrzędnej myClass. Wynik to „Guru99 ".

Krok 2) Odkomentuj wiersze nr 8 i 10. Uruchom kod

Teraz metoda 1 jest zdefiniowana w klasie childClass, a wynik „childClass Method1” jest poprawnie wyświetlany.

Krok 3) Odkomentuj wiersz nr 9. Uruchom kod

Możesz wywołać metodę klasy nadrzędnej, używając składni

ParentClassName.MethodName(self)

W naszym przypadku wywołujemy myClass.method1(self) i Guru99 jest drukowane zgodnie z oczekiwaniami

Krok 4) Odkomentuj linię nr 19. Uruchom kod.

Wywoływana jest metoda 2 klasy potomnej i zgodnie z oczekiwaniami wypisywany jest komunikat „childClass method2”.

Python Konstruktorzy

Konstruktor to funkcja klasy, która tworzy instancję obiektu o wstępnie zdefiniowanych wartościach.

Zaczyna się podwójnym podkreśleniem (_). Metoda __init__()

W poniższym przykładzie bierzemy nazwę użytkownika za pomocą konstruktora.

class User:
    name = ""

    def __init__(self, name):
        self.name = name

    def sayHello(self):
        print("Welcome to Guru99, " + self.name)

User1 = User("Alex")
User1.sayHello()

Dane wyjściowe będą następujące:

Witamy w Guru99, Alex

Python 2 Przykład

Powyższe kody są Python 3 przykłady, jeśli chcesz wbiec Python 2 proszę rozważyć poniższy kod.

# How to define Python classes
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
  def method2(self,someString):    
      print "Software Testing:" + someString
      
   
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()


#How Inheritance works
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
      
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print "childClass Method1" 
        
  def method2(self):
        print "childClass method2"     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

Poznaj nasz kolejny samouczek na temat Polimorfizm w Python

FAQ

Klasa to projekt definiujący atrybuty i metody, natomiast obiekt to konkretna instancja zbudowana na podstawie tej klasy. Jedna klasa może tworzyć wiele obiektów, z których każdy maping własne dane.

Python programowanie obiektowe opiera się na czterech filarach: hermetyzacji (łączenie danych z metodami), abstraccja (ukrywanie złożoności), dziedziczenie (ponowne wykorzystanie klasy bazowej) i polimorfizm (jeden interfejs, wiele form).

Zmienne klasy są deklarowane w ciele klasy i współdzielone przez każdą instancję. Zmienne instancji są przypisywane wewnątrz __init__ za pomocą self i należą tylko do jednego obiektu.

Funkcja super() zwraca proxy do klasy nadrzędnej, umożliwiając potomkowi wywołanie metod lub konstruktora klasy nadrzędnej bez konieczności bezpośredniego nadawania im nazwy. Często jest zapisywana jako super().__init__(), aby zainicjować odziedziczone atrybuty.

Hermetyzacja ogranicza bezpośredni dostęp do wewnętrznych danych obiektu. Python, dodaj prefiks atrybutu w postaci pojedynczego podkreślenia (_name), jeśli chcesz go chronić, lub podwójnego podkreślenia (__name), jeśli chcesz zniekształcić nazwę.

Tak. ZA Python Klasa może dziedziczyć po kilku rodzicach, np. klasa Child(A, B). Python Rozwiązuje duplikaty nazw metod, korzystając z kolejności rozwiązywania metod (MRO), sprawdzanej metodą mro().

Programowanie obiektowe jest kluczowe dla frameworków sztucznej inteligencji i uczenia maszynowego. Biblioteki takie jak PyTorSieci, warstwy i estymatory modeli ch i scikit-learn są traktowane jako klasy, dzięki czemu można je podklasować i ponownie wykorzystywać do budowania modeli.

Tak. GitHub Copilot i asystenci AI generują Python Klasy, konstruktory i dziedziczenie z krótkiego wiersza poleceń. Automatyzują one powtarzalne schematy, choć warto sprawdzić poprawność logiki wyników.

Podsumuj ten post następująco: