Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по специфике 
:(
    Опции темы
GrayCardinal
Дата 1.12.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 1
Всего: 58



Добрый день !
Приведу кусочек
Код


class Test:
    def __init__(self):
        pass

a = Test()
a.any_variable = "any"
print a.any_variable


Т.е. любой переменной класса можно присвоить значение извне. Чем это обоснованно ? Как же инкапсуляция ?



--------------------
PM MAIL WWW   Вверх
powerfox
Дата 1.12.2009, 13:21 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 97



Всё в твоих руках ;)
Вот небольшой примерчик на скорую руку:

Код

>>> class Closed:
...     def __init__(self):
...         self.__dict__["description"] = "Closed :-_"
...     def __setattr__(self, item, value):
...         if self.__dict__.has_key(item):
...             dict.__setattr__(self, item, value)
...         else:
...             raise AttributeError(item)
...
>>> cl = Closed()
>>> cl.description
'Closed :-_'
>>> cl.desc2 = "Opened?"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 8, in __setattr__
AttributeError: desc2
>>>



--------------------
user posted image
PM WWW   Вверх
pythonwin
Дата 1.12.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(GrayCardinal @  1.12.2009,  14:56 Найти цитируемый пост)
Т.е. любой переменной класса можно присвоить значение извне. Чем это обоснованно ? Как же инкапсуляция ?

в питоне нет приватных методов или атрибутов. Есть "магические" типа __init__(self, ...) или __my_attr__ = ... 
также если ты атрибут назначить в классе вне методов, как в следующем напримере, то при изменении атрибута в объекте класса, то для других объектов класса атрибут тоже изменяется 
книга
PM WWW GTalk Jabber   Вверх
GrayCardinal
Дата 1.12.2009, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 1
Всего: 58



Цитата

в питоне нет приватных методов или атрибутов

Ммм. Это нормально ?  smile 


--------------------
PM MAIL WWW   Вверх
pythonwin
Дата 1.12.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(GrayCardinal @  1.12.2009,  18:24 Найти цитируемый пост)
Ммм. Это нормально ?  smile  

а зачем тебе приватные атрибуты?
если тебе нужно сделать так чтобы нельзя менять значение атрибута объекта, посмотри мета-классы.
А если ты работаешь в большой и возможно распределенной команде и хочешь написать базовый класс, который будут использовать остальные без возможности изменить, то либо почитай на портале по питону Андрея Светлова ( у него такой опыт есть) либо используй Java.
PM WWW GTalk Jabber   Вверх
GrayCardinal
Дата 1.12.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 1
Всего: 58



Цитата

либо используй Java

угу.  smile 


--------------------
PM MAIL WWW   Вверх
pythonwin
Дата 1.12.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



GrayCardinal, меня мучают смутные сомнения, что сейчас GrayCardinal,  и GrayCardinal, полгода/год назад == разные люди...
PM WWW GTalk Jabber   Вверх
GrayCardinal
Дата 1.12.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 1
Всего: 58



pythonwin, 
 smile 
Спасибо, конечно, но GrayCardinal - всё тот же оболтус что и шесть лет назад  smile 
 smile 


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.