其思想是,类包含多个实例,当为某个方法调用其中一个实例时,它会检查同一类的所有其他现有实例中的某个值。或者,也许用代码来表述会更容易:
class foo:
def __init__(self, value):
self.value = value
def getvalues(self):
self.magichappenshere = '?'
Joe = foo(5)
Bob = foo(4)
Jon = foo(3)
Jon.getvalues()
#expected output:
#12
如何引用其他实例而不显式调用它们?我正在考虑在__init__
中提供额外的name属性,该属性对应于Joe = foo("Joe", 5)
中的实例名,并在某种外部列表中累积。但这似乎不是一个很好的解决办法。怎么做呢?你知道吗
您可以在类属性中向类“注册”实例:
请注意,这将永远保留实例!您必须使用weak references来避免这种情况:
WeakSet()
跟踪对象而不使其保持活动状态;如果对实例的任何其他引用降到0,则实例将从内存中清除,foo._instances
弱集将停止列出它。你知道吗演示:
使用class attribute跟踪值的总和
在python中,您不需要getter,因此我只需直接访问class属性:
相关问题 更多 >
编程相关推荐