Найти - Пользователи
Полная версия: Массив в классе
Начало » Python для новичков » Массив в классе
1
ingushet
Здравствуйте!

Имеется класс:
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](После выполнения цикла)
–Почему значения в массиве не сохраняются?
sergeek
массив это он вот?
m6=T() for each in range(100)
надо в квадратные скобки завернуть
m6=[T() for each in range(100)]
Вставляй текст прграммы просто в тег code , черточек не надо, назови переменные получше
FishHook
И задачу описать не мешало бы, код какой-то странный
ingushet
Почему после того как я присвою значение в цикле, он выдает совершенно другой результат?
FishHook
ingushet
Почему после того как я присвою значение в цикле, он выдает совершенно другой результат?
Вы можете толком объяснить чего Вы добиваетесь и чего у Вас выходит не так? Понять это из кода не представляется возможным.
ingushet
Есть класс с одним параметром m= . Я создал массив экземпляров этого класса. В цикле пытаюсь для каждого экземпляра заполнить массив m. Собственно в цикле все якобы присваивается, проверяю это printОМ. После цикла пытаюсь вывести элемент массива какого либо экземпляра, а он выводит бред. Заполняет все одним числом.
ingushet
# -*- 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]

Вот полный код программы.
FishHook
Вроде нормально все

# -*- 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
FishHook
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);
и будет счастье
ingushet
Спасибо, заработало
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB