Python OOP: Třída, objekt, dědičnost a konstruktor

⚡ Chytré shrnutí

Objektově orientované programování v Python organizuje kód kolem tříd a objektů, sdružuje související data a chování. Tento přístup ukazuje, jak definovat třídy, vytvářet objekty, aplikovat dědičnost a inicializovat atributy pomocí konstruktorů.

  • 🔘 Plán třídy: Třída seskupuje související data a metody do opakovaně použitelného plánu pro vytváření objektů.
  • ☑️ Objekty: Objekty jsou instance třídy, z nichž každá ukládá své vlastní hodnoty atributů.
  • (Tj. Definování tříd: Klíčové slovo class, odsazené metody a parametr self definují Python třída.
  • 🧬 Dědictví: Odvozená třída dědí atributy a metody ze základní třídy a podporuje vícenásobnou dědičnost.
  • 🛠️ Konstruktéři: Metoda __init__() inicializuje každý nový objekt předdefinovanými hodnotami.
  • 🤖 Relevance umělé inteligence: Knihovny strojového učení, jako je PyTorvrstvy a sítě modelu ch jako Python třídy.

Python OOP: Třída, objekt, dědičnost a konstruktor

OOPs in Python

OOPs in Python je programovací přístup, který se zaměřuje na používání objektů a tříd stejně jako ostatní obecné programovací jazyky. Objekty mohou být jakékoli entity reálného světa. Python umožňuje vývojářům vyvíjet aplikace pomocí přístupu OOPs s hlavním zaměřením na znovupoužitelnost kódu. Je velmi snadné vytvářet třídy a objekty Python.

Co je třída?

Třída v Python je logická skupinaping dat a funkcí. Dává svobodu vytvářet datové struktury, které obsahují libovolný obsah, a jsou proto snadno dostupné.

Například pro kteréhokoli zaměstnance banky, který chce získat podrobnosti o zákazníkovi online, by měl jít na zákaznická třída, kde by byly uvedeny všechny jeho atributy, jako jsou podrobnosti o transakcích, podrobnosti o výběrech a vkladech, nesplacený dluh atd.

Jak definovat Python třídy

Chcete-li definovat třídu, musíte zvážit následující body

Krok 1) In Python, třídy jsou definovány pomocí "Třída" Klíčové slovo

class myClass():

Krok 2) Uvnitř tříd můžete definovat funkce nebo metody, které jsou součástí této třídy

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • Zde máme definovanou metodu method1, která vypíše „Guru99. "
  • Další metodou, kterou jsme definovali, je metoda2, která vypíše „Testování softwaru“ + SomeString. SomeString je proměnná dodaná volající metodou

Krok 3) Vše ve třídě je odsazeno, stejně jako kód ve funkci, smyčce, příkazu if atd. Vše, co není odsazeno, není ve třídě

Definovat Python třídy

POZNÁMKA: O používání „já“ v Python

  • Argument self odkazuje na samotný objekt. Proto se používá slovo self. V rámci této metody se tedy self bude odkazovat na konkrétní instanci tohoto objektu, se kterou se pracuje.
  • Self je jméno preferované podle konvence Pythons k označení prvního parametru instančních metod v Python. Je součástí systému Python syntaxe pro přístup k členům objektů

Krok 4) Chcete-li vytvořit objekt třídy

c = myClass()

Krok 5) Volání metody ve třídě

c.method1()
    c.method2(" Testing is fun")
  • Všimněte si, že když voláme metodu1 nebo metodu2, nemusíme zadávat klíčové slovo pro sebe. To za nás automaticky vyřídí metoda Python runtime.
  • Python runtime předá hodnotu „self“, když v instanci zavoláte metodu instance, ať už ji poskytnete úmyslně nebo ne
  • Jen se musíte starat o nesobecké argumenty

Krok 6) Zde je úplný kód

# 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 funguje dědičnost

Dědičnost je vlastnost používaná v objektově orientovaném programování; odkazuje na definování nové třídy s menšími nebo žádnými úpravami existující třídy. Nová třída se nazývá odvozená třída a od toho, který zdědí, se nazývá základna. Python podporuje dědičnost; také podporuje vícenásobná dědictví. Třída může dědit atributy a metody chování z jiné třídy, která se nazývá podtřída nebo třída dědice.

Jak funguje dědičnost v Python

Python Syntaxe dědičnosti

class DerivedClass(BaseClass):
    body_of_derived_class

Krok 1) Spusťte následující kód

# 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()

Všimněte si, že metoda1 v childClass není definována, ale je odvozena z rodičovské třídy myClass. Výstup je „Guru99. "

Krok 2) Odkomentujte řádek č. 8 a 10. Spusťte kód

Nyní je metoda 1 definována v childClass a výstup „childClass Method1“ je správně zobrazen.

Krok 3) Odkomentovat řádek č. 9. Spusťte kód

Pomocí syntaxe můžete volat metodu nadřazené třídy

ParentClassName.MethodName(self)

V našem případě voláme myClass.method1(self) a GuruČíslo 99 je vytištěno dle očekávání.

Krok 4) Odkomentovat řádek č. 19. Spusťte kód.

Zavolá se metoda 2 podřízené třídy a podle očekávání se vytiskne „metoda třídy2 dítěte“.

Python Konstruktory

Konstruktor je funkce třídy, která vytváří instanci objektu na předdefinované hodnoty.

Začíná dvojitým podtržítkem (_). Je to metoda __init__()

V níže uvedeném příkladu bereme jméno uživatele pomocí konstruktoru.

class User:
    name = ""

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

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

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

Výstup bude:

Vítejte v Guru99, Alex

Python 2 Příklad

Výše uvedené kódy jsou Python 3 příklady, pokud se chcete zapojit Python 2 prosím zvažte následující kód.

# 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()

Přečtěte si náš další tutoriál o Polymorfismus v Python

Nejčastější dotazy

Třída je plán definující atributy a metody, zatímco objekt je konkrétní instance vytvořená z této třídy. Jedna třída může vytvořit mnoho objektů, každý uchováváping jeho vlastní data.

Python Objektově orientované programování spočívá na čtyřech pilířích: zapouzdření (sdružování dat s metodami), abstracce (skrývání složitosti), dědičnost (opětovné použití základní třídy) a polymorfismus (jedno rozhraní, mnoho forem).

Proměnné třídy jsou deklarovány uvnitř těla třídy a sdíleny každou instancí. Proměnné instance jsou přiřazovány uvnitř __init__ pomocí self a patří pouze jednomu objektu.

Funkce super() vrací proxy pro nadřazenou třídu, což umožňuje podřízené třídě volat nadřazené metody nebo konstruktor bez nutnosti přímého pojmenování. Často se píše jako super().__init__() pro inicializaci zděděných atributů.

Zapouzdření omezuje přímý přístup k interním datům objektu. V Python, před atribut přidejte jedno podtržítko (_name) jako protected nebo dvojité podtržítko (__name) pro úpravu názvu.

Ano. A Python Třída může dědit od několika rodičů, například třída Child(A, B). Python řeší duplicitní názvy metod pomocí pořadí rozlišení metod (MRO), kontrolovaného metodou mro().

Objektově orientované programování je ústředním bodem frameworků pro umělou inteligenci a strojové učení. Knihovny jako PyTorch a scikit-learn modelují sítě, vrstvy a estimátory jako třídy, takže je můžete podtřídit a znovu použít k vytváření modelů.

Ano. GitHub Copilot a asistenti s umělou inteligencí generují Python třídy, konstruktory a dědičnost z krátkého promptu. Automatizují opakující se standardizované postupy, i když byste měli zkontrolovat výstup, zda je logicky správný.

Shrňte tento příspěvek takto: