在实例化期间获取对象名称

时间:2012-11-19 04:49:26

标签: python

是否有可能获取对象的名称并在创建时将其存储为对象?即如果我要创建一个新的课程..

Class foobar():
    pass

然后说......

fooinstance = foobar()

有没有办法在foobar类型的创建对象中存储名称'fooinstance'?可以使用名称来实现此行为吗?

我问的原因是,创建的对象将创建其他对象,这些对象需要知道它们是由谁创建的。

3 个答案:

答案 0 :(得分:2)

没有。无论如何都没有意义。

fooinstance = foobar()
bar = fooinstance
print bar.__name__

找到另一种识别对象的方法,可能是在初始化程序中设置了一个键。

答案 1 :(得分:2)

你正试图做这样的事情吗?

class Player(object):     
    # ... snip ...

    def fire(self):
        bullet = Bullet()
        bullet.owner = self
        bullet_list.append(bullet)

当您需要了解父母或所有者时,我使用了类似的东西。如果所有者可能不存在,则可以使用weakref。

答案 2 :(得分:1)

如果您需要知道“谁”创建了一个对象,那么只需在创建时传递“who”:

class Foo():
  def __init__(self,whichbar):
    do something with whichbar

class Bar():
  def something(self):
    myfoo = Foo(self)

请注意,对象所分配的变量的 name 是无关紧要的 - 当对象在例程之间传递时,该名称会发生​​变化。这是你关心的实际情况。