print ad.a, ad.b, ad.c ad.d = 512 


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



ЗНАЕТЕ ЛИ ВЫ?

print ad.a, ad.b, ad.c ad.d = 512

Поиск

raise AttributeError

 

def __setattr__(self, name, value): if name[0] != '_':

 

self._selfdict[name] = value else:

 

raise AttributeError

 

def __delattr__(self, name):

 

if name[0] != '_' and self._selfdict.has_key(name): del self._selfdict[name]

 

ad = AttDict({'a': 1, 'b': 10, 'c': '123'})


 


print ad.a, ad.b, ad.c ad.d = 512

 

print ad.d

 

Сокрытие данных

 

Подчеркивание("_")в начале имени атрибута указывает на то,что он не входит в

 

общедоступный интерфейс.Обычно применяется одиночное подчеркивание,которое в языке не играет особой роли,но как бы говорит программисту: "этот метод только для внутреннего использования".Двойное подчеркивание работает как указание на то,что атрибут-приватный.При этом атрибут все же доступен,но уже под другим именем,что и иллюстрируется ниже:

 

>>> class X:

... x = 0

... _x = 0

... __x = 0

...

>>> dir(X)

 

['_X__x', '__doc__', '__module__', '_x', 'x']

 

Полиморфизм

 

В переводе с греческого полиморфизм означает"многоформие".Так в информатике называют возможность использования одного имени для выполнения различных действий.

 

Можно встретить множество определений полиморфизма(также есть несколько видов полиморфизма)в зависимости от языка программирования.Как правило,в качестве примера проявления полиморфизма приводят переопределение методов в подклассах.При этом можно создать функцию,требующую формального аргумента-экземпляра базового класса,а в качестве фактического аргумента давать экземпляр подкласса.Функция будет вызывать метод объекта с именем,а за именем будут скрываться различные действия.В связи с этим полиморфизм обычно связывают с иерархией наследования.

 

ВPythonполиморфизм связан не с наследованием,а с набором и смыслом доступных методов в экземпляре класса.Ниже будет показано,что,имея определенные методы,можно воссоздать класс для строки или любого другого встроенного типа.Для этого необходимо определить свойственный типу набор методов.Конечно,нужный набор методов можно получить и с помощью наследования,но вPythonэто не только не обязательно,но иногда и противоречит здравому смыслу.

 

При написании функции вPythonобычно не проверяется,к какому типу(классу)относится тот или иной аргумент:некоторые методы просто применяются к переданному объекту.Тем самым функции получаются максимально обобщенными:они не требуют от объектов-параметров большего,чем наличие методов с определенным именем,набором аргументов и семантикой.

 

Следующий пример показывает полиморфизм в том виде,в котором он свойствененPython:

 

def get_last(x): return x[-1]

 



Поделиться:


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

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