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的每个实例的实例名称?

最佳答案 如果你的意思是如何从你分配给self.hand1的实例中获取hand1,答案就是你不能.当你执行self.hand1 = Hand()时,你告诉Foo对象它有一个Hand,但是Hand对象不知道它已被分配给Foo.你可以这样做:

h = Hand()
self.bob = h
self.larry = h

那个手应该是什么“名称”?你将同一只手分配给“bob”和“larry”,所以它无法拥有一个唯一的名称.

如果你想为每只手都有一个名字,你需要告诉你想要给它的名字.您必须修改Hand代码以允许您将名称传递给构造函数,然后创建Hand with Hand(“some name”).

你当然可以通过为它们分配属性给手“名字”:

self.hand1 = Hand()
self.hand1.name = "hand 1"

. . .但这些名字并不是特殊的或“自动的”.

最重要的是,如果您想要某个名称,您需要决定如何处理该名称.您需要编写自己的代码,为其命名,并使用您自己的代码来检索其名称.

点赞