Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 30, 2012 11:18:57

ingushet
Зарегистрирован: 2012-10-30
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Массив в классе

Здравствуйте!

Имеется класс:

class T(object): 
m = [] 

и массив экземляров этого класса:
m6=[T() for each in range(100)]
Код программы:
for i in range(3):
____k2=0
____j=0
____print ""
____for j in range(2):
________if i!=j:
____________m6[i].m[j]=k2
____________print m6[i].m[j]
________if i==j:
____________k2=k2+1
____________m6[i].m[j]=k2
____________print m6[i].m[j]
________k2=k2+1
print m6[0].m[0]
–Выводит:
1-->m6[0].m[0]
2
--
0
2
--
0
1
--
0---->m6[0].m[0](После выполнения цикла)
–Почему значения в массиве не сохраняются?

Отредактировано ingushet (Окт. 30, 2012 13:26:24)

Офлайн

#2 Окт. 30, 2012 11:48:51

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Массив в классе

массив это он вот?

m6=T() for each in range(100)
надо в квадратные скобки завернуть
m6=[T() for each in range(100)]
Вставляй текст прграммы просто в тег code , черточек не надо, назови переменные получше

Офлайн

#3 Окт. 30, 2012 11:49:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Массив в классе

И задачу описать не мешало бы, код какой-то странный



Офлайн

#4 Окт. 30, 2012 15:15:10

ingushet
Зарегистрирован: 2012-10-30
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Массив в классе

Почему после того как я присвою значение в цикле, он выдает совершенно другой результат?

Офлайн

#5 Окт. 30, 2012 15:28:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Массив в классе

ingushet
Почему после того как я присвою значение в цикле, он выдает совершенно другой результат?
Вы можете толком объяснить чего Вы добиваетесь и чего у Вас выходит не так? Понять это из кода не представляется возможным.



Офлайн

#6 Окт. 30, 2012 15:42:55

ingushet
Зарегистрирован: 2012-10-30
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Массив в классе

Есть класс с одним параметром m= . Я создал массив экземпляров этого класса. В цикле пытаюсь для каждого экземпляра заполнить массив m. Собственно в цикле все якобы присваивается, проверяю это printОМ. После цикла пытаюсь вывести элемент массива какого либо экземпляра, а он выводит бред. Заполняет все одним числом.

Офлайн

#7 Окт. 30, 2012 15:47:44

ingushet
Зарегистрирован: 2012-10-30
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Массив в классе

# -*- coding: cp1251 -*-
import xlrd
import math
class Tochki(object):
    m = range(16);
m6=[Tochki() for each in range(100)]
k=0;k1=0;k2=0;
for i in range(3):
    k2=6
    j=0
    print ""
    for j in range(2):
        if i!=j:
            m6[i].m[j]=k2
            print m6[i].m[j]
        else:
            k2=5
            m6[i].m[j]=k2
            print m6[i].m[j]
        k2=k2+1
print ""
print m6[2].m[1]

Вот полный код программы.

Отредактировано ingushet (Окт. 30, 2012 15:49:02)

Офлайн

#8 Окт. 30, 2012 15:58:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Массив в классе

Вроде нормально все

# -*- coding: utf-8 -*-
import random
class Foo(object):
    def __init__(self):
        self.m=[]
l=[Foo() for _ in xrange(1000)]
for foo in l:
    tmp=range(10)
    random.shuffle(tmp)
    foo.m=tmp
for i in l[:10]:
    print i.m



Офлайн

#9 Окт. 30, 2012 16:02:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Массив в классе

ingushet
class Tochki(object):
    m = range(16);
m6=[Tochki() for each in range(100)]

А! Догнал, так у тебя m - это атрибут класса, а не объекта, сделай так
class Tochki(object):
    def __init__(self):
        self.m = range(16);
и будет счастье



Офлайн

#10 Окт. 30, 2012 16:26:08

ingushet
Зарегистрирован: 2012-10-30
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Массив в классе

Спасибо, заработало

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version