Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2011 09:27:40

DonVulture
От:
Зарегистрирован: 2011-07-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

инициализация параметров класса по умолчанию

Пояснить пожалуйста инициализацию параметров по умолчанию.

class TGraphicsList(object):
"""набор графиков"""
def __init__(self,Lister=[]):
self.grfList=Lister

def Add(self,currgrf):
"""добавление графика"""
self.grfList.append(currgrf)



grl=TGraphicsList()
grfobj=(1,2,3)
grl.Add(grfobj)

grl2=TGraphicsList()

print grl2.grfList
Код выведет , а по моим ожиданиям должен вывести пустой список



Офлайн

#2 Авг. 17, 2011 09:54:37

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

инициализация параметров класса по умолчанию

Дело в том, что в __init__ в переменной Lister создается пустой список - . Так как у нас все работает по ссылке, то при следующем создании инстанса все будет ссылаться на один и тот же объект-список в памяти (потому что атрибуту grfList вы присваиваете ССЫЛКУ на список). В вашем случае можно в ините, например, написать

...
self.grfList = Lister[:]
...



Офлайн

#3 Авг. 18, 2011 10:38:38

DonVulture
От:
Зарегистрирован: 2011-07-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

инициализация параметров класса по умолчанию

Спасибо



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version