python - 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我是新来的课程,并且仍然试图了解我如何使用它们,所以这个问题很可能表明了这种理解。请随时指出这些误解。谢谢
解决方案
我想这就是你要找的。包含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)
最后,您可以将容器类视为已经存在的集合(列表或字典或其他任何东西)的子类,以继承其功能。
推荐阅读
- mongodb - 如何在聚合中使用 $elementMatch
- javascript - Webix 数据表 || 加载数据服务器端
- r - 使用“间隙容差”对顺序值进行分组
- c# - 删除文件正则表达式中两个标签之间的文本块
- flutter - Flutter:local_auth 有时不显示身份验证对话框
- salesforce - AMPscript 问题 - 需要精确的语法来动态显示副本
- java - reduce 操作中并行流的同步问题
- laravel - 如何从客户端向服务器发送数据到 laravel echo websocket
- ios - 如何获取默认的系统填充值?
- ios - iOS CloudDocsLibrary 崩溃(可能是 KVO 崩溃)