Python OOP: Třída, Objekt, Dědičnost a Konstruktor s příkladem

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é seskupení dat a funkcí. Poskytuje svobodu vytvářet datové struktury, které obsahují libovolný obsah a jsou tedy 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 transakci, podrobnosti o výběru a vkladu, 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 jsme definovali metodu1, 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

  • Sebeargument se týká samotného objektu. Proto použití slova já. Takže v této metodě bude self odkazovat na konkrétní instanci tohoto objektu, se kterým 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ž zavoláme metodu1 nebo metodu2, nemusíme zadávat vlastní klíčové slovo. To za nás automaticky vyřizuje 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.

Definovat Python třídy

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 nadřazené 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ě zavoláme myClass.method1(self) a Guru99 se vytiskne podle 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, Alexi

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

Shrnutí

„Třída“ je logické seskupení funkcí a dat. Python třídy poskytuje všechny standardní funkce objektově orientovaného programování.

  • Mechanismus dědičnosti tříd
  • Odvozená třída, která přepíše jakoukoli metodu své základní třídy
  • Metoda může volat metodu základní třídy se stejným názvem
  • Python Třídy jsou definovány klíčovým slovem "třída" sám
  • Uvnitř tříd můžete definovat funkce nebo metody, které jsou součástí třídy
  • Vše ve třídě je odsazeno, stejně jako kód ve funkci, smyčce, příkazu if atd.
  • Vlastní argument v Python odkazuje na samotný objekt. Self je jméno preferované podle konvence Pythons k označení prvního parametru instančních metod v Python
  • Python runtime předá hodnotu „self“ automaticky, když v instanci zavoláte metodu instance, ať už ji poskytnete úmyslně nebo ne
  • In Python, třída může zdědit atributy a metody chování z jiné třídy, která se nazývá podtřída nebo třída dědice.