Объектно-ориентированное программирование в Python


Download 110.21 Kb.
bet7/9
Sana07.03.2023
Hajmi110.21 Kb.
#1244448
1   2   3   4   5   6   7   8   9

Есть существенное отличие между такими атрибутами и личными (private) членами класса в таких языках как C++ или Java: атрибут остается доступным, но под именем вида _ИмяКласса__ИмяАтрибута, а при каждом обращении Python будет модифицировать имя в зависимости от того, через экземпляр какого класса происходит обращение к атрибуту. Таким образом, родительский и дочерний классы могут иметь атрибут с именем, например, «__f», но не будут мешать друг другу.

  • Есть существенное отличие между такими атрибутами и личными (private) членами класса в таких языках как C++ или Java: атрибут остается доступным, но под именем вида _ИмяКласса__ИмяАтрибута, а при каждом обращении Python будет модифицировать имя в зависимости от того, через экземпляр какого класса происходит обращение к атрибуту. Таким образом, родительский и дочерний классы могут иметь атрибут с именем, например, «__f», но не будут мешать друг другу.

Пример:

  • Пример:
  • class parent(object):

    def __init__(self):

    self.__f = 2

    def get(self):return self.__f

    ....

    class child(parent):

    def __init__(self):

    self.__f = 1

    parent.__init__(self)

    def cget(self):return self.__f

    ....

    c = child()

    print c.get()

    2

    print c.cget()

    1

    print c.__dict__

    {'_child__f': 1, '_parent__f': 2}

    # на самом деле у объекта "с" два разных атрибута

Агрегация. Контейнеры. Итераторы

  • Агрегация. Контейнеры. Итераторы
  • Агрегация, когда один объект входит в состав другого, или отношение «HAS-A» («имеет»), реализуется в Питоне с помощью ссылок. Питон имеет несколько встроенных типов контейнеров: список, словарь, множество. Можно определить собственные классы контейнеров со своей логикой доступа к хранимым объектам. (Следует заметить, что в Питон агрегацию можно считать разновидностью ассоциации, так реально объекты не вложены друг в друга в памяти и, более того, время жизни элемента может не зависеть от времени жизни контейнера.)

Download 110.21 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling