# Programowanie obiektowe w Pythonie 3; Studium przypadku

Rozdział 5., Kiedy korzystać z programowania obiektowego


## Traktujmy obiekty jako obiekty

```python

>>> square = [(1,1), (1,2), (2,2), (2,1)]

>>> from math import hypot
>>> def distance(p_1, p_2):
...     return hypot(p_1[0]-p_2[0], p_1[1]-p_2[1])
>>> def perimeter(polygon):
...     pairs = zip(polygon, polygon[1:]+polygon[:1])
...     return sum(
...         distance(p1, p2) for p1, p2 in pairs
...     )

>>> perimeter(square)
4.0

```

## Dodawanie zachowań do klas danych przy wykorzystaniu właściwości

## Obiekty menedżerów
