🗊Презентация Python

Нажмите для полного просмотра!
Python, слайд №1Python, слайд №2Python, слайд №3Python, слайд №4Python, слайд №5Python, слайд №6Python, слайд №7Python, слайд №8Python, слайд №9Python, слайд №10Python, слайд №11Python, слайд №12Python, слайд №13Python, слайд №14Python, слайд №15Python, слайд №16Python, слайд №17Python, слайд №18Python, слайд №19Python, слайд №20Python, слайд №21Python, слайд №22Python, слайд №23Python, слайд №24

Содержание

Вы можете ознакомиться и скачать презентацию на тему Python. Доклад-сообщение содержит 24 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Python
ООП
Описание слайда:
Python ООП

Слайд 2





План
Спадкування
Множинне спадкування
Порядок вирішення методів
Описание слайда:
План Спадкування Множинне спадкування Порядок вирішення методів

Слайд 3





Спадкування
Спадкування - механізм мови, що дозволяє описати новий клас на основі вже існуючого (батьківського, базового) класу.
 Клас-нащадок може додати власні методи і властивості, а також користуватися батьківськими методами і властивостями. 
Дозволяє будувати ієрархії класів. 
Є одним з основних принципів об'єктно – орієнтованого програмування.
Описание слайда:
Спадкування Спадкування - механізм мови, що дозволяє описати новий клас на основі вже існуючого (батьківського, базового) класу. Клас-нащадок може додати власні методи і властивості, а також користуватися батьківськими методами і властивостями. Дозволяє будувати ієрархії класів. Є одним з основних принципів об'єктно – орієнтованого програмування.

Слайд 4





Приклад 1
class Base:
    def method(self):
        print("Hello!")

class Child(Base):
    pass

obj=Child()
obj.method()
Описание слайда:
Приклад 1 class Base: def method(self): print("Hello!") class Child(Base): pass obj=Child() obj.method()

Слайд 5





Приклад 2
class Figure(object):
    def __init__(self, side):
        self.side = side


class Square(Figure):
    def draw(self):
        for i in range(self.side):
            print('* ' * self.side)


class Triangle(Figure):
    def draw(self):
        for i in range(self.side):
            print('* ' * i)
Описание слайда:
Приклад 2 class Figure(object): def __init__(self, side): self.side = side class Square(Figure): def draw(self): for i in range(self.side): print('* ' * self.side) class Triangle(Figure): def draw(self): for i in range(self.side): print('* ' * i)

Слайд 6





Приклад 2
def main():
    square = Square(10)
    square.draw()

    print()

    triangle = Triangle(5)
    triangle.draw()


if __name__ == '__main__':
    main()
Описание слайда:
Приклад 2 def main(): square = Square(10) square.draw() print() triangle = Triangle(5) triangle.draw() if __name__ == '__main__': main()

Слайд 7





Множинне спадкоємство
При множинному спадкуванні у класу може бути більш одного предка. В цьому випадку клас успадковує методи всіх предків. Перевага такого підходу в більшій гнучкості, проте він може бути потенційним джерелом помилок.
Список базових класів вказується через кому в круглих дужках після імені даного класу:
Описание слайда:
Множинне спадкоємство При множинному спадкуванні у класу може бути більш одного предка. В цьому випадку клас успадковує методи всіх предків. Перевага такого підходу в більшій гнучкості, проте він може бути потенційним джерелом помилок. Список базових класів вказується через кому в круглих дужках після імені даного класу:

Слайд 8





Приклад 3
class Bird(object):
    def fly(self):
        print('I am flying.')

class Horse(object):
    def run(self):
        print('I am running.')

class Pegasus(Horse, Bird):
    pass

def main():
    bird = Bird()
    horse = Horse()
    pegasus = Pegasus()
Описание слайда:
Приклад 3 class Bird(object): def fly(self): print('I am flying.') class Horse(object): def run(self): print('I am running.') class Pegasus(Horse, Bird): pass def main(): bird = Bird() horse = Horse() pegasus = Pegasus()

Слайд 9





Приклад 3
 bird.fly()
    # bird.run()  # Error
    print()

    # horse.fly()  # Error
    horse.run()
    print()

    pegasus.fly()
    pegasus.run()


if __name__ == '__main__':
    main()
Описание слайда:
Приклад 3 bird.fly() # bird.run() # Error print() # horse.fly() # Error horse.run() print() pegasus.fly() pegasus.run() if __name__ == '__main__': main()

Слайд 10





Класи старого і нового типів
У версіях до 2. 2 деякі об'єктно - орієнтовані можливості Python були помітно обмежені. Починаючи з версії 2. 2, об'єктна система Python була істотно перероблена і доповнена. 
З метою сумісності з існуючим кодом в Python 2 існують дві системи типів: класи нового типу (new-style classes) і класи старого типу (old-style classes, classic classes). 
Для створення класу нового типу слід успадкувати його від будь-якого іншого класу нового типу. Всі стандартні класи є класами нового типу. Базовим з них є клас object. 
Якщо в Python 2 не вказувати базовий клас або успадкувати його від іншого класу старого типу, то даний клас є класом старого типу.
Описание слайда:
Класи старого і нового типів У версіях до 2. 2 деякі об'єктно - орієнтовані можливості Python були помітно обмежені. Починаючи з версії 2. 2, об'єктна система Python була істотно перероблена і доповнена. З метою сумісності з існуючим кодом в Python 2 існують дві системи типів: класи нового типу (new-style classes) і класи старого типу (old-style classes, classic classes). Для створення класу нового типу слід успадкувати його від будь-якого іншого класу нового типу. Всі стандартні класи є класами нового типу. Базовим з них є клас object. Якщо в Python 2 не вказувати базовий клас або успадкувати його від іншого класу старого типу, то даний клас є класом старого типу.

Слайд 11





Приклад
>>> class MyObject(object):
			pass

>>> type(MyObject)
<class 'type'>
>>>
Описание слайда:
Приклад >>> class MyObject(object): pass >>> type(MyObject) <class 'type'> >>>

Слайд 12





Приклад 4
class A(object):
    def method(self):
        print('A method')

class B(A):
    pass

class C(A):
    def method(self):
        print('C method')

class D(B, C):
    pass

obj = D()
obj.method()  # 'C method‘

#print(D.mro())
Описание слайда:
Приклад 4 class A(object): def method(self): print('A method') class B(A): pass class C(A): def method(self): print('C method') class D(B, C): pass obj = D() obj.method() # 'C method‘ #print(D.mro())

Слайд 13





Порядок вирішення методів (MRO)
Якщо атрибут, до якого здійснюється доступ, не знайдений в поточному класі, проводиться його пошук в класах - батьків. 
 Порядок, в якому інтерпретатор переглядає базові класи, визначається лінеаризацією даного класу, так званої MRO (Method Resolution Order). Вона зберігається в атрибуті класу __ mro__.  
MRO будується за допомогою алгоритму C3 -лінеарізаціі
Описание слайда:
Порядок вирішення методів (MRO) Якщо атрибут, до якого здійснюється доступ, не знайдений в поточному класі, проводиться його пошук в класах - батьків. Порядок, в якому інтерпретатор переглядає базові класи, визначається лінеаризацією даного класу, так званої MRO (Method Resolution Order). Вона зберігається в атрибуті класу __ mro__. MRO будується за допомогою алгоритму C3 -лінеарізаціі

Слайд 14





Порядок вирішення методів (MRO)
Властивості лінеаризації: 
стійкість і розширюваність;
монотонність: в лінеаризації класу - нащадка дотримується той же порядок проходження класів - прабатьків, що і в лінеаризації класу - батька; 
властивість локального старшинства: в лінеаризації класу - нащадка дотримується той же порядок проходження класів - батьків, що і в його оголошенні
Описание слайда:
Порядок вирішення методів (MRO) Властивості лінеаризації: стійкість і розширюваність; монотонність: в лінеаризації класу - нащадка дотримується той же порядок проходження класів - прабатьків, що і в лінеаризації класу - батька; властивість локального старшинства: в лінеаризації класу - нащадка дотримується той же порядок проходження класів - батьків, що і в його оголошенні

Слайд 15





Порядок вирішення методів (MRO)
У прикладі зліва лінеаризація класу D, тобто D. __ Mro__, виглядає як [D, B, C, A].
Таким чином, якщо спробувати викликати obj.method (), де obj - екземпляр класу D, буде викликаний метод класу C.
Якби A був класом старого типу в Python 2, то був би викликаний метод method класу A, що в даному випадку є неправильною поведінкою, так як він перевизначений в класі C, спадкоємцем якого є клас D. Це одна з причин, по яким слід використовувати класи нового типу.
Описание слайда:
Порядок вирішення методів (MRO) У прикладі зліва лінеаризація класу D, тобто D. __ Mro__, виглядає як [D, B, C, A]. Таким чином, якщо спробувати викликати obj.method (), де obj - екземпляр класу D, буде викликаний метод класу C. Якби A був класом старого типу в Python 2, то був би викликаний метод method класу A, що в даному випадку є неправильною поведінкою, так як він перевизначений в класі C, спадкоємцем якого є клас D. Це одна з причин, по яким слід використовувати класи нового типу.

Слайд 16





Отримання доступу до атрибутів суперкласу
Якщо в даному класі метод або атрибут був перевизначеним, а  потрібний доступ до відповідного атрибуту суперкласу, це можна зробити двома способами: 
 шляхом явного звернення до атрибуту необхідного класу: BaseClass.method (self)
 за допомогою інстанціонування спеціального проксі - об'єкта класу super (виглядає , як виклик функції). 
В Python 2 як параметри конструктора super передаються ім'я поточного класу і посилання на екземпляр поточного класу:
           super (MyClass, self) .method () 
В Python 3 можна не вказувати нічого і дані параметри будуть отримані автоматично: 
super () .method () 
                          # те ж саме, що 
                        super (__ class__, self) .method ()
Описание слайда:
Отримання доступу до атрибутів суперкласу Якщо в даному класі метод або атрибут був перевизначеним, а потрібний доступ до відповідного атрибуту суперкласу, це можна зробити двома способами: шляхом явного звернення до атрибуту необхідного класу: BaseClass.method (self) за допомогою інстанціонування спеціального проксі - об'єкта класу super (виглядає , як виклик функції). В Python 2 як параметри конструктора super передаються ім'я поточного класу і посилання на екземпляр поточного класу: super (MyClass, self) .method () В Python 3 можна не вказувати нічого і дані параметри будуть отримані автоматично: super () .method () # те ж саме, що super (__ class__, self) .method ()

Слайд 17





Приклад 5
class Animal(object):
    def __init__(self):
        self.can_fly = False
        self.can_run = False

    def print_abilities(self):
        print(self.__class__.__name__)
        print('Can fly:', self.can_fly)
        print('Can run:', self.can_run)
        print()
Описание слайда:
Приклад 5 class Animal(object): def __init__(self): self.can_fly = False self.can_run = False def print_abilities(self): print(self.__class__.__name__) print('Can fly:', self.can_fly) print('Can run:', self.can_run) print()

Слайд 18





Приклад 5
class Bird(Animal):
    def __init__(self):
        super().__init__()
        self.can_fly = True

class Horse(Animal):
    def __init__(self):
        super().__init__()
        self.can_run = True

class Pegasus(Horse, Bird):
    pass
Описание слайда:
Приклад 5 class Bird(Animal): def __init__(self): super().__init__() self.can_fly = True class Horse(Animal): def __init__(self): super().__init__() self.can_run = True class Pegasus(Horse, Bird): pass

Слайд 19





Приклад 5
def main():
    bird = Bird()
    bird.print_abilities()

    horse = Horse()
    horse.print_abilities()

    pegasus = Pegasus()
    pegasus.print_abilities()


if __name__ == '__main__':
    main()
Описание слайда:
Приклад 5 def main(): bird = Bird() bird.print_abilities() horse = Horse() horse.print_abilities() pegasus = Pegasus() pegasus.print_abilities() if __name__ == '__main__': main()

Слайд 20





Приклад 5
Bird
Can fly: True
Can run: False

Horse
Can fly: False
Can run: True

Pegasus
Can fly: True
Can run: True
Описание слайда:
Приклад 5 Bird Can fly: True Can run: False Horse Can fly: False Can run: True Pegasus Can fly: True Can run: True

Слайд 21





Визначення типу об'єкта
Тип * даного об'єкта можна визначити за допомогою атрибута __class__ і вбудованої функції type (obj).
Атрибут класу __bases__ зберігає кортеж (незмінний список) базових класів. 
• Оскільки відношення успадкування є транзитивним, в загальному випадку для перевірки того, чи є даний об'єкт екземпляром заданого класу або чи є даний клас підклассом заданого класу, ці атрибути потрібно перевіряти рекурсивно. Існують вбудовані функції, які це роблять.
• isinstance (obj, cls) перевіряє, чи є obj екземпляром класу cls або класу, який є спадкоємцем класу cls; • issubclass (cls, base) перевіряє, чи є клас cls спадкоємцем класу base.
Описание слайда:
Визначення типу об'єкта Тип * даного об'єкта можна визначити за допомогою атрибута __class__ і вбудованої функції type (obj). Атрибут класу __bases__ зберігає кортеж (незмінний список) базових класів. • Оскільки відношення успадкування є транзитивним, в загальному випадку для перевірки того, чи є даний об'єкт екземпляром заданого класу або чи є даний клас підклассом заданого класу, ці атрибути потрібно перевіряти рекурсивно. Існують вбудовані функції, які це роблять. • isinstance (obj, cls) перевіряє, чи є obj екземпляром класу cls або класу, який є спадкоємцем класу cls; • issubclass (cls, base) перевіряє, чи є клас cls спадкоємцем класу base.

Слайд 22





Поліморфізм
Описание слайда:
Поліморфізм

Слайд 23





Качина типізація
 Неявна типізація, латентна типізація або качина типізація (англ. Duck typing) - вид динамічної типізації, при якій межі використання об'єкта визначаються його поточним набором методів і властивостей, на противагу спадкоємства від певного класу. Тобто вважається, що об'єкт реалізує інтерфейс, якщо він містить всі методи цього інтерфейсу, незалежно від зв'язків в ієрархії успадкування та приналежності до якого-небудь конкретного класу. 
Назва терміна походить від англійського «duck test» ( «качиний тест»), який в оригіналі звучить як:
 «If it looks like a duck, swims like a duck and quacks like a duck, then it probably is a duck». 
( «Якщо це виглядає як качка, плаває як качка і крякає як качка, то, ймовірно, це качка».).
Описание слайда:
Качина типізація Неявна типізація, латентна типізація або качина типізація (англ. Duck typing) - вид динамічної типізації, при якій межі використання об'єкта визначаються його поточним набором методів і властивостей, на противагу спадкоємства від певного класу. Тобто вважається, що об'єкт реалізує інтерфейс, якщо він містить всі методи цього інтерфейсу, незалежно від зв'язків в ієрархії успадкування та приналежності до якого-небудь конкретного класу. Назва терміна походить від англійського «duck test» ( «качиний тест»), який в оригіналі звучить як: «If it looks like a duck, swims like a duck and quacks like a duck, then it probably is a duck». ( «Якщо це виглядає як качка, плаває як качка і крякає як качка, то, ймовірно, це качка».).

Слайд 24





Поліморфізм
def get_last(x):
 return x[-1]

print (get_last([1, 2, 3]))
print (get_last("abcd"))
Описание слайда:
Поліморфізм def get_last(x): return x[-1] print (get_last([1, 2, 3])) print (get_last("abcd"))



Теги Python
Похожие презентации
Mypresentation.ru
Загрузить презентацию