2

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

Class foobar():
    pass

然后说...

fooinstance = foobar()

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

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

4

3 回答 3

2

不。无论如何,这将毫无意义。

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

找到另一种方法来识别您的对象,也许在初始化程序中设置一个键。

于 2012-11-19T04:51:26.537 回答
2

你正在尝试做这样的事情吗?

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

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

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

于 2012-11-19T05:14:29.427 回答
1

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

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

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

请注意,分配给对象的变量的名称是无关紧要的——该名称会随着对象在例程之间传递而改变。这是您关心的实际实例。

于 2012-11-19T05:18:48.533 回答