Python 对象感知数组中的情况吗?

发布于 2024-10-05 15:48:32 字数 98 浏览 2 评论 0原文

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

Is there a way in Python for an object to 'know' what its array element id is? I.e 6 in an array, and the object itself prints out its own array element number, so '0,1,2,3,4,5'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

你是暖光i 2024-10-12 15:48:32

不。该对象可能同时位于所有对象和多个对象内,因此除非您告诉它,否则它无法知道。

No. The object could be inside everything and multiple objects at the same time, so it can't know unless you tell it.

氛圍 2024-10-12 15:48:32

一句话,不...

In a word, no...

陪我终i 2024-10-12 15:48:32

只是迂腐地说:一般来说,不......
但从技术上讲,某些(特定)对象是可能的,这些对象是某些数组的一部分,可以“知道它们的位置”......

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)...并且“知道”它的位置...

Just to be pedantic: in general, no...
but technically it is possible for some (specific) objects, which are part of some arrays to "know their position"...

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

...technically 'o' is an object...and part of an array (s.arr)...and "knows" it's position...

给妤﹃绝世温柔 2024-10-12 15:48:32

除非你告诉它,否则不会,而告诉它会导致非常烦人的耦合和/或责任分离问题。您真正想要做什么?

Not unless you tell it, and telling it leads to very annoying coupling and/or separation of responsibility problems. What are you really trying to do?

您的好友蓝忘机已上羡 2024-10-12 15:48:32

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

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

No, but you can use the 'enumerate' builtin to iterate over the index and the element at the same time:

>>> x = ['a','b','c']
>>> for index,element in enumerate(x):
...     print index,element
... 
0 a
1 b
2 c
灰色世界里的红玫瑰 2024-10-12 15:48:32

如果对象知道它所属的列表,它可以通过执行 the_list.index(self) 来查找。否则,不行。

If the object knows the list it is part of, it could find out by doing the_list.index(self). Otherwise, no.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文