是否可以获取对象的名称并在创建时将其存储为对象?即,如果我要创建一个新课程..
Class foobar():
pass
然后说...
fooinstance = foobar()
有没有办法将名称“fooinstance”存储在创建的 foobar 类型的对象中?可以使用名称来实现此行为吗?
我问的原因是,创建的对象将创建额外的对象,这些对象需要知道它们是由谁创建的。
是否可以获取对象的名称并在创建时将其存储为对象?即,如果我要创建一个新课程..
Class foobar():
pass
然后说...
fooinstance = foobar()
有没有办法将名称“fooinstance”存储在创建的 foobar 类型的对象中?可以使用名称来实现此行为吗?
我问的原因是,创建的对象将创建额外的对象,这些对象需要知道它们是由谁创建的。
不。无论如何,这将毫无意义。
fooinstance = foobar()
bar = fooinstance
print bar.__name__
找到另一种方法来识别您的对象,也许在初始化程序中设置一个键。
你正在尝试做这样的事情吗?
class Player(object):
# ... snip ...
def fire(self):
bullet = Bullet()
bullet.owner = self
bullet_list.append(bullet)
当您需要了解父母或所有者时,我使用了类似的东西。如果所有者可能不存在,您可以使用弱引用。
如果您需要知道“谁”创建了一个对象,那么只需在创建时传递该“谁”:
class Foo():
def __init__(self,whichbar):
do something with whichbar
class Bar():
def something(self):
myfoo = Foo(self)
请注意,分配给对象的变量的名称是无关紧要的——该名称会随着对象在例程之间传递而改变。这是您关心的实际实例。