获取对象的名称并在创建时将其存储为对象是否可能?即如果我要创建一个新类..在实例化过程中获取对象名称
Class foobar():
pass
然后说...
fooinstance = foobar()
是否有存储类型Foobar的创建的对象的名称“fooinstance”的方法吗?可以使用名称来实现这种行为吗?
我问的原因是,创建的对象将创建额外的对象,他们需要知道他们是由谁创建的。
获取对象的名称并在创建时将其存储为对象是否可能?即如果我要创建一个新类..在实例化过程中获取对象名称
Class foobar():
pass
然后说...
fooinstance = foobar()
是否有存储类型Foobar的创建的对象的名称“fooinstance”的方法吗?可以使用名称来实现这种行为吗?
我问的原因是,创建的对象将创建额外的对象,他们需要知道他们是由谁创建的。
你想要做这样的事情吗?
class Player(object):
# ... snip ...
def fire(self):
bullet = Bullet()
bullet.owner = self
bullet_list.append(bullet)
我已经使用类似的东西,当你需要知道父母或所有者。如果所有者可能不存在,则可以使用weakref。
不,没有意义。
fooinstance = foobar()
bar = fooinstance
print bar.__name__
找到识别您的对象的另一种方法,也许用初始化程序中的一个键设置。
为了阐明意图,我编辑了我的问题。 fooinstance将创建需要知道他们是由谁创建的对象。我宁愿不必在赋值时拥有一次,并且再次定义键值,因为我认为这会降低可读性。有没有不同的方式来做到这一点? – Flaminator
如果你需要知道“谁”创造了一个对象,那么就传递“谁”在创建时间:
class Foo():
def __init__(self,whichbar):
do something with whichbar
class Bar():
def something(self):
myfoo = Foo(self)
注意,名变量一个对象被分配到是不重要的 - 该名称随着对象在例程之间传递而改变。这是你关心的实际情况。
谢谢,这回答了这个问题。我已经给了猴子这张支票,但是根据谁先回答。 – Flaminator
没有“谁”,只有引用。 – Keith
在实例化过程中,实例化对象B的对象A的引用如何传递给对象B? – Flaminator
你为什么要这么做?听起来你想要得到循环引用和内存泄漏。最终目标是什么? – Keith