55 lines
2.0 KiB
ReStructuredText
55 lines
2.0 KiB
ReStructuredText
|
:title: Питонячье ООП на уточках
|
|||
|
:date: 24 Jul 2021
|
|||
|
|
|||
|
========================
|
|||
|
Питонячье ООП на уточках
|
|||
|
========================
|
|||
|
|
|||
|
Это весьма скупая на информацию напоминалка о работе с классами. Более подробно написали на `proglib.io`_ и в `документации`_.
|
|||
|
|
|||
|
.. _proglib.io: https://proglib.io/p/python-oop/
|
|||
|
.. _документации: https://docs.python.org/3/reference/compound_stmts.html#class-definitions
|
|||
|
|
|||
|
Создал файл ``duck.py``:
|
|||
|
|
|||
|
.. code-block:: python
|
|||
|
|
|||
|
# Объявляем класс "птица". От него в последствии будет унаследован
|
|||
|
# класс "уточка". Здесь задаются общие характеристики для всех птиц
|
|||
|
# и метод "летать". Аргумент `self` – это ссылка на объект, в контексте
|
|||
|
# которого вызывается метод. Она обязательна для методов классов.
|
|||
|
|
|||
|
class Bird(object):
|
|||
|
can_fly = True
|
|||
|
wings = 2
|
|||
|
def fly(self):
|
|||
|
print('I\'m flying!')
|
|||
|
|
|||
|
# Уточка это уже конкретный биологический вид (опускам породы и
|
|||
|
# виды уточек).
|
|||
|
# У неё есть имя и цвет (хотя цвет мог быть и у абстрактной птицы).
|
|||
|
# Также уточка обладает уникальным методом "сказать кря".
|
|||
|
|
|||
|
class Duck(Bird):
|
|||
|
name = 'Duck'
|
|||
|
color = 'Yellow'
|
|||
|
def say_quack(self):
|
|||
|
print('quack!')
|
|||
|
|
|||
|
Как этим пользоваться:
|
|||
|
|
|||
|
.. code-block:: text
|
|||
|
|
|||
|
>>> import duck
|
|||
|
>>> bird = duck.Bird()
|
|||
|
>>> duck = duck.Duck()
|
|||
|
>>> bird.fly()
|
|||
|
I'm flying!
|
|||
|
>>> duck.fly()
|
|||
|
I'm flying!
|
|||
|
>>> duck.say_quack()
|
|||
|
quack!
|
|||
|
>>> duck.name = 'Cool Duck'
|
|||
|
>>> duck.name
|
|||
|
'Cool Duck'
|