首页 > 解决方案 > Python内部容器类

问题描述

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我是新来的课程,并且仍然试图了解我如何使用它们,所以这个问题很可能表明了这种理解。请随时指出这些误解。谢谢

标签: pythonclassobjectinner-classes

解决方案


我想这就是你要找的。包含MyObject 类的多个实例的类 Bucket。由于您没有指定 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)

最后,您可以将容器类视为已经存在的集合(列表或字典或其他任何东西)的子类,以继承其功能。


推荐阅读