Python OOPs: клас, обект, наследяване и конструктор с пример

OOPs in Python

OOPs in Python е програмен подход, който се фокусира върху използването на обекти и класове, както и други общи езици за програмиране. Обектите могат да бъдат всякакви обекти от реалния свят. Python позволява на разработчиците да разработват приложения, използвайки OOPs подхода с основен фокус върху повторното използване на кода. Много е лесно да създавате класове и обекти Python.

Какво е клас?

Клас в Python е логическо групиране на данни и функции. Той дава свободата да създавате структури от данни, които съдържат произволно съдържание и следователно са лесно достъпни.

Например, за всеки банков служител, който иска да извлече данните за клиента онлайн, ще отиде на клиентски клас, където ще бъдат изброени всички негови атрибути като подробности за транзакцията, подробности за теглене и депозит, неизплатен дълг и т.н.

Как да определим Python класове

За да определите класа, трябва да имате предвид следните точки

Стъпка 1) In Python, класовете се дефинират от „Клас“ ключова дума

class myClass():

Стъпка 2) Вътре в класовете можете да дефинирате функции или методи, които са част от този клас

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • Тук сме дефинирали method1, който отпечатва „Guru99.“
  • Друг метод, който дефинирахме, е method2, който отпечатва „Тестване на софтуер“ + SomeString. SomeString е променливата, предоставена от извикващия метод

Стъпка 3) Всичко в класа е с отстъп, точно като кода във функцията, цикъла, оператора if и т.н. Всичко, което не е с отстъп, не е в класа

Определяне Python класове

ЗАБЕЛЕЖКА: За използването на „себе си“ в Python

  • Самодоводът се отнася до самия обект. Оттук и използването на думата аз. Така че вътре в този метод self ще се отнася до конкретния екземпляр на този обект, върху който се работи.
  • Self е името, предпочитано по конвенция от Pythons за указване на първия параметър на методите на екземпляр в Python, Тя е част от Python синтаксис за достъп до членове на обекти

Стъпка 4) Да направим обект от класа

c = myClass()

Стъпка 5) За извикване на метод в клас

c.method1()
    c.method2(" Testing is fun")
  • Забележете, че когато извикваме method1 или method2, не е нужно да предоставяме собствената ключова дума. Това автоматично се обработва за нас от Python време на изпълнение.
  • Python времето за изпълнение ще предаде „самостоятелна“ стойност, когато извикате метод на екземпляр на инстанция, независимо дали го предоставяте съзнателно или не
  • Просто трябва да се грижите за не-аз аргументите

Стъпка 6) Ето пълния код

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

Как работи наследяването

Наследяването е функция, използвана в обектно-ориентираното програмиране; това се отнася до дефиниране на нов клас с по-малко или никакви модификации на съществуващ клас. Новият клас се нарича производен клас и от тази, която наследява, се нарича база. Python подпомага наследяването; също поддържа множество наследства. Един клас може да наследи атрибути и методи на поведение от друг клас, наречен подклас или клас наследник.

Определяне Python класове

Python Синтаксис на наследяване

class DerivedClass(BaseClass):
    body_of_derived_class

Стъпка 1) Изпълнете следния код

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

Забележете, че в childClass, method1 не е дефиниран, но е извлечен от родителския myClass. Резултатът е „Guru99“.

Стъпка 2) Разкоментирайте ред # 8 и 10. Стартирайте кода

Сега метод 1 е дефиниран в childClass и изходът „childClass Method1“ е показан правилно.

Стъпка 3) Разкоментирайте ред #9. Стартирайте кода

Можете да извикате метод на родителския клас, като използвате синтаксиса

ParentClassName.MethodName(self)

В нашия случай извикваме myClass.method1(self) и Guru99 се отпечатва според очакванията

Стъпка ) Разкоментирайте ред #19. Стартирайте кода.

Извиква се метод 2 на дъщерния клас и „childClass method2“ се отпечатва според очакванията.

Python конструкторите

Конструкторът е функция от клас, която инстанцира обект до предварително дефинирани стойности.

Започва с двойна долна черта (_). Това е метод __init__().

В примера по-долу вземаме името на потребителя, използвайки конструктор.

class User:
    name = ""

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

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

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

Резултатът ще бъде:

Добре дошъл в Guru99, Алекс

Python 2 Пример

Горните кодове са Python 3 примера, ако искате да се включите Python 2, моля, разгледайте следния код.

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

Научете следващия ни урок за Полиморфизъм в Python

Oбобщение

„Клас“ е логическо групиране на функции и данни. Python предоставя всички стандартни характеристики на обектно-ориентираното програмиране.

  • Механизъм за наследяване на класове
  • Производен клас, който замества всеки метод от неговия базов клас
  • Методът може да извика метода на базов клас със същото име
  • Python Класовете се дефинират чрез ключова дума "клас" себе си
  • Вътре в класовете можете да дефинирате функции или методи, които са част от класа
  • Всичко в един клас е с отстъп, точно като кода във функцията, цикъла, оператора if и т.н.
  • Аргументът за себе си в Python се отнася до самия обект. Self е името, предпочитано по конвенция от Pythons за указване на първия параметър на методите на екземпляр в Python
  • Python времето за изпълнение ще предаде „самостоятелна“ стойност автоматично, когато извикате метод на инстанция в инстанция, независимо дали го предоставяте съзнателно или не
  • In Python, един клас може да наследява атрибути и методи на поведение от друг клас, наречен подклас или клас наследник.