Python:如何引用实例名称?
问题内容:
我正在使用以下代码收集实例:
class Hand():
instances = []
def __init__(self):
Hand.instances.append(self)
self.value = 5
def do_something(self, a):
self.value = self.value * a
class Foo():
def __init__(self):
pass
def insty(self):
self.hand1 = Hand()
self.hand2 = Hand()
foo = Foo()
foo.insty()
print Hand.instances
for hand in Hand.instances:
print "how do I print the instance name?"
最后一行只是学习如何访问实例名称的一种方法,因此我可以按顺序在每个实例上调用“ do_something”方法。
如何访问Hand的每个实例的实例名称?
问题答案:
如果您想知道如何hand1
从分配给的实例中获取信息self.hand1
,那么答案是您做不到。执行此操作时self.hand1 = Hand()
,您告诉Foo对象它有一个Hand,但是Hand对象不知道已将其分配给Foo。您可以这样做:
h = Hand()
self.bob = h
self.larry = h
现在那只手的“名称”应该是什么?您为“ bob”和“ larry”分配了相同的手,因此不可能有一个唯一的名称。
如果要为每只手起一个名字,则需要告诉该手要给它起什么名字。您将必须修改Hand代码以允许您将名称传递给构造函数,然后使用来创建Hand
Hand("some name")
。
您当然可以通过在指针上分配属性来为其指定名称:
self.hand1 = Hand()
self.hand1.name = "hand 1"
。。。但是这些名称在任何方面都不是特殊的或“自动的”。
底线是,如果你想要的东西有一个名字, 你 需要决定如何处理该名称。您需要编写自己的代码来为其命名,并编写自己的代码来获取其名称。