例如:
obj1 = ClassName()
obj1.name = "name1"
obj2 = ClassName()
obj2.name = "name2"
obj3 = ClassName()
obj3.name = "name3"
obj4 = ClassName()
obj4.name = "name4"
我们有一个返回对象数的静态变量: ClassName.counter
我如何获得obj1.name,obj2.name等,但是如果对象计数可以是动态的(例如使用循环)?
PS:如果你能说我在python中如何做到这一点会更好,但只有设计也会很好。
答案 0 :(得分:2)
您可以使用Factory
类,即一个处理ClassName
对象创建和存储的对象。然后,您可以轻松访问ClassName
类(必须是单例)中的数组中的不同Factory
答案 1 :(得分:1)
嗯......实际上不建议做这种类型的工作人员,有点难以理解并容易出错...但是,你可以这样做:
class MyClass(object):
names_list = []
_name = None
def get_name(self):
return self._name
def set_name(self, name):
assert self._name is None
self._name = name
self.names_list.append(name)
name = property(get_name, set_name)
obj1 = MyClass()
obj1.name = 'name1'
obj2 = MyClass()
obj2.name = 'name2'
print obj1.names_list
print len(obj1.names_list)
有效。它很丑。使用一些外部工厂来处理它可能要好得多。如果你想存储到现有实例的链接,一些带弱映射的数组/字典可能是一个很好的解决方案。