Форум сайта python.su
22
привет. есть такой код
class c: value = None next = None c1=c() c2=c() c3=c() ... c1.next = c2 c2.next = c3 ...
Офлайн
1
У вас в коде c2.next = c3. И после этого вы хотите чтобы с2.next ссылался на c1?
Офлайн
22
pnk.andrian
да.
есть один класс С. есть его экземпляры. причем атрибут next, каждого экземпляра класса, ссылается на следующий экземпляр.
мне надо сделать реверс, т.е. чтобы атрибут экземпляров классов, next, ссылался на предыдущий класс.
#было c2.next = c3 c3.next = c4 .... #стало c3.next =c2 c4.next = c1 ....
Отредактировано ilnur (Март 12, 2013 17:29:26)
Офлайн
173
<телепат_моде>
- вам нужны не атрибуты класса а атрибуты экземпляра
- нужен дополнительный атрибут prev
class C: def __init__(self, value=None, prev=None, next=None): self.prev = prev self.next = next self.value = value first = last = C(0) for i in range(1, 10): c = C(i, last) last.next = c last = c c = first while c is not None: print c.value c = c.next
Отредактировано reclosedev (Март 12, 2013 18:15:12)
Офлайн
22
я хочу то, чего хотят от меня.
:)
может я не правильно понял чего хотят от меня.
а казалось что понял.
Офлайн
22
есть ли стандартные методы, которые возвращают экземпляры класса?
т.е. вот есть у меня класс С. как узнать сколько экзепляров создано, и как узнать эти экземпляры?
Офлайн
173
Офлайн
22
А вообще, непонятно чего хотите.есть односвязный список классов. в каждом классе есть ссылкаа на другой класс. мне надо развернуть данный односвязный список.
Отредактировано ilnur (Март 12, 2013 20:06:14)
Офлайн
173
ilnur
мне надо развернуть данный односвязный список.
# -*- coding: utf-8 -*- class C: def __init__(self, value=None, next=None): self.next = next self.value = value # вот оно def reverse(node): new_root = None while node: next_node, node.next = node.next, new_root new_root, node = node, next_node return new_root first = last = C(0) for i in range(1, 10): c = C(i) last.next = last = c first = reverse(first) n = first while n: print n.value n = n.next
Отредактировано reclosedev (Март 12, 2013 20:48:45)
Офлайн
22
а вот что я натворил.
прокоментируйте пожалуйста
class c: value = None next = None c1 = c() c2 = c() c3 = c() c4 = c() c1.value = 'class c1' c1.next = c2 c2.value = 'class c2' c2.next = c3 c3.value = 'class c3' c3.next = c4 c4.value = 'class c4' c4.next = None classes = (c1, c2, c3, c4) print 'after' for i in classes: print i.value try: print i.next.value except AttributeError: print None except: print 'error' print '---' print '***************' print 'before' classes_nexts = [i.next for i in classes] classes_nexts.pop() classes_nexts.pop() classes_nexts.insert(0, c1) classes_nexts.insert(0, None) for n, i in enumerate(classes): i.next = classes_nexts[n] for i in classes: print i.value try: print i.next.value except AttributeError: print None except: print 'error' print '---'
Офлайн