2010-12-02 2 views
0

Gibt es einen Weg in Python für ein Objekt zu 'wissen', was seine Array-Element-ID ist? Ie 6 in einem Array, und das Objekt selbst druckt seine eigene Array Elementnummer aus, so '0,1,2,3,4,5'Python-Objekt Bewusstsein, in einem Array zu sein?

+3

Betrachten Sie es auf diese Weise: Was passiert, wenn das Objekt mehr als ein Element von die Sequenz? –

+0

Ich weiß nicht, welches Problem Sie versuchen zu lösen, aber versuchen Sie ['enumerate()'] (http://docs.python.org/library/functions.html#enumerate) –

+0

Nein, weil kein Objekt in der Lage ist Dies würde nicht in [ein Array] passen (http://docs.python.org/library/array.html). Oder meinst du [Liste] (http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange). Die Antwort ist immer noch nein im Allgemeinen. – aaronasterling

Antwort

2

No. Das Objekt könnte sich in allem und mehreren Objekten gleichzeitig befinden, so dass es es nicht wissen kann, wenn Sie es nicht sagen.

2

In einem Wort, no ...

-1

Wenn das Objekt die Liste kennt, zu der es gehört, könnte es herausfinden, indem es tut. Ansonsten, nein.

+3

Nur wenn keine früheren Objekte in der Liste mit dem betreffenden Objekt übereinstimmen. –

0

Nur um pedantisch: in der Regel keine ... aber technisch ist es möglich für einige (spezifische) Objekte, die Bestandteil einiger Arrays sind auf „ihre Position kennen“ ...

class HelpfulClass(object): 
    def __init__(self): 
    self.arr = [] 

    def add(self, obj): 
    pos = len(self.arr) + 1 
    self.arr.append(obj) 
    obj.pos = pos 

class SmartObj(object): 
    def __init__(self): 
    self.pos = None 

    def print_my_element(self): 
    print self.pos 

if __name__ == '__main__': 
    s = HelpfulClass() 
    o = SmartObj() 
    s.add(o) 

    o.print_my_element() 

... technisch ‚o‘ ist ein Ziel ... und Teil eines Arrays (s.arr) ... und „weiß“, seine Position ...

0

Nicht, wenn Sie es sagen, und sagen, es führt zu sehr lästigem Koppeln und/oder Trennen von Verantwortungsproblemen. Was sind Sie wirklich versuchen zu tun?

0

Nein, aber Sie können die Verwendung ‚aufzählen‘ builtin den Index iterieren und das Element zugleich:

>>> x = ['a','b','c'] 
>>> for index,element in enumerate(x): 
...  print index,element 
... 
0 a 
1 b 
2 c 
Verwandte Themen