是否有可能获取对象的名称并在创建时将其存储为对象?即如果我要创建一个新的课程..
Class foobar():
pass
然后说......
fooinstance = foobar()
有没有办法在foobar类型的创建对象中存储名称'fooinstance'?可以使用名称来实现此行为吗?
我问的原因是,创建的对象将创建其他对象,这些对象需要知道它们是由谁创建的。
答案 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 是无关紧要的 - 当对象在例程之间传递时,该名称会发生变化。这是你关心的实际情况。