В случае,когда надклассы имеют одинаковые методы,использование того или иного метода определяется порядком разрешения методов(method resolution order). Для 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

В случае,когда надклассы имеют одинаковые методы,использование того или иного метода определяется порядком разрешения методов(method resolution order). Для

Поиск

Порядок разрешения методов


 


В случае,когда надклассы имеют одинаковые методы,использование того или иного метода определяется порядком разрешения методов(method resolution order).Для

 

"новых" классов узнать этот порядок очень просто с помощью атрибута __mro__:

 

>>> str.__mro__

 

(<type 'str'>, <type 'basestring'>, <type 'object'>)

 

Это означает,что сначала методы ищутся в классе str,затем в basestring,а уже потом-в object.

 

Для"классических"классов порядок несколько отличается от порядка разрешения методов в"новых"классах.Нужно стараться избегать множественного наследования или применять его очень аккуратно.

 

Агрегация

 

Контейнеры

 

Под контейнером обычно понимают объект,основным назначением которого является хранение и обеспечение доступа к другим объектам.Контейнеры реализуют отношение"HAS-A" ("ИМЕЕТ") между объектами. Встроенные типы, список и словарь -- яркие примеры контейнеров.Можно построить собственные типы контейнеров,которые будут иметь свою логику доступа к хранимым объектам.В контейнере хранятся не сами объекты,а ссылки на них.

 

Для практических нужд вPythonобычно хватает встроенных контейнеров(словаря и списка),но если это необходимо,можно создать и другие.Ниже приведен класс Стек,реализованный на базе списка:

 

class Stack:

 

def __init__(self):

"""Инициализация стека"""

 

self._stack = [] def top(self):

 

"""Возвратить вершину стека (не снимая)""" return self._stack[-1]

 

def pop(self):

 

"""Снять со стека элемент"""

return self._stack.pop() def push(self, x):



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 56; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.01 с.)