Python对象意识到在数组中?

时间:2010-12-02 18:30:38

标签: python arrays oop object

在Python中有没有办法让'知道'它的数组元素id是什么? I.e 6在一个数组中,对象本身打印出自己的数组元素号,所以'0,1,2,3,4,5'

6 个答案:

答案 0 :(得分:2)

总之,不......

答案 1 :(得分:2)

没有。对象可以同时包含在所有内容和多个对象中,因此除非您告诉它,否则无法知道。

答案 2 :(得分:0)

只是为了迂腐:总的来说,没有...... 但从技术上讲,某些(特定)对象是可能的,这些对象是某些数组的一部分,以“了解它们的位置”......

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()  

...技术上'o'是一个对象......和一个数组的一部分(s.arr)......并且“知道”它的位置......

答案 3 :(得分:0)

除非你告诉它,并告诉它导致非常烦人的耦合和/或责任问题的分离。你真的试图做什么?

答案 4 :(得分:0)

不,但您可以使用'enumerate'内置来同时迭代索引和元素:

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

答案 5 :(得分:-1)

如果对象知道它所属的列表,它可以通过the_list.index(self)找到。否则,没有。