from itertools import count
class myobject(object):
id=count(0)
def __init__(self):
self.ID=next(self.id)
self.dat=[]
class bucket(object):
def __init__(self):
self.container_object=self.Container_object
class Container_object(object):
self.container={}
self.contained_objects=self.container.keys()
def create_object(myobject):
self.container[myobject.ID]=object_data
我希望在类存储桶中创建一个容器对象,以便可以在类存储桶中创建myobject的不同实例。
例如,当create_object创建可被访问并包含在类bucket.Container_object和 bucket.Container_object.ID中的新对象时,它将是myobject的实例
PS我是班上的新手,但仍然尝试了解如何使用它们,因此问题很可能表明了这种理解。请随意指出这些误解。谢谢
答案 0 :(得分:0)
我认为这就是您要寻找的。 一个类存储桶,其中包含MyObject类的多个实例。由于您没有指定Container对象的任何特殊功能,因此我将使用一个简单的字典。
from itertools import count
class MyObject(object):
id=count(0)
def __init__(self):
self.ID=next(self.id)
self.dat=[]
class Bucket(object):
def __init__(self):
self.contained_objects={}
def add_object(myobject):
self.contained_objects[myobject.ID]=myobject.dat
如果出于某些原因要将集合包装在其他对象中,则只需在Bucket类之外定义WrapperContainer 类,并在内部实例化WrapperContainer的实例它。
from itertools import count
class MyObject(object):
id=count(0)
def __init__(self):
self.ID=next(self.id)
self.dat=[]
class WrapperContainer(object):
def __init__(self):
self.collection = {}
def add_object(my_object):
self.collection[myobject.ID]=myobject.dat
def do_whatever_you_want():
pass
class Bucket(object):
def __init__(self):
self.container_object= WrapperContainer() #a specific instance
def add_object(myobject):
self.container_object.add_object(my_object)
最后,您可以将容器类视为已存在集合(列表或字典或其他任何东西)的子类来继承其功能。