Форум сайта python.su
Собственно код:
class TEST(): def __init__(self): self.s += str(len(self.s)) #к строке дописываем её длину self.arr.append(len(self.arr)) #в список добавляем элемент с его длиной def __str__(self): return "s = " + self.s + "\tarr = " + str(self.arr) s = "" arr = [] print(TEST()) print(TEST())
s = 0 arr = [0]
s = 0 arr = [0, 1]
Офлайн
строка иммутабельна, += - создает новую строку
список нет, .append добавляет элемент в существующий
Офлайн
наверное хотите так
class TEST(): def __init__(self): self.s = "" self.arr = [] self.s += str(len(self.s)) #к строке дописываем её длину self.arr.append(len(self.arr)) #в список добавляем элемент с его длиной def __str__(self): return "s = " + self.s + "\tarr = " + str(self.arr) print(TEST()) print(TEST())
Офлайн
Вообще товарищ sergeek прав, но
Посмотрите внимательно на понятия переменной экземпляра класса и переменной объекта класса,ну это так, на тот случай что бы помнили разницу.
class Test(object): l=[] class Test2(object): def __init__(self): self.l=[]
Отредактировано JOHN_16 (Сен. 16, 2013 16:35:27)
Офлайн
Так, понял что нужно определять переменные в конструкторе и всё будет как обычно . А вот поведение переменных, определённых вместе с методами пока не очень понятно. Может порекомендуете статью или учебник с разъяснением этого момента?
Офлайн
Описание поведения можно найти тут, но сам я его не читал. Мне как-то проще было вывести эту семантику посредством эксперементирования с атрибутами.
Офлайн