【发布时间】:2015-09-15 18:23:19
【问题描述】:
如何复制一个复杂的对象,以便向它添加新成员?当我尝试使用 deepcopy 时,它会失败并显示“TypeError: cannot serialize ...”
最初的问题是我想将一些成员变量添加到现有对象但不能,因为这样做会导致“AttributeError: Object is fixed”
所以想法是在一个新类中创建原始对象的完整副本,并添加成员。
orig_obj = SomeSqlObject.get_root() # contents unclear, complex
class orig_expanded():
def __init__(self, replicable_object):
self.__dict__ = copy.deepcopy(replicable_object.__dict__)
self.added_member1 = None
self.added_list = []
expanded_thing = orig_expanded(orig_obj)
但我明白了:
TypeError: cannot serialize '_io.TextIOWrapper' object
评论的后续回答,“什么是 SomeSqlObject?” 也许我的名字是错误的......公司的实际名称被混淆了。它是一种返回一个对象的方法,该对象表示树(某种)的基础,该树已定义
class SomeSqlObject(ParentRegisterSet):
"""
Implements the functionality of the Device "root" Register Set.
"""
def __init__(self, db, v1, dg, ui):
self.__db__ = db
self.__dg__ = dg
self.__ui__ = ui
SomeSqlObject.__init__(self, v1, None)
# note: this class is now locked
【问题讨论】:
-
SomeSqlObject.get_root()返回什么? -
我的名字可能会误导...试图混淆公司代码...但是,这是我称之为 SomeSqlObject 的类结构:class SomeSqlObject(ParentRegisterSet): """ 实现的功能设备“根”寄存器集。“””def init__(self, db, v1, dg, ui): self.__db = db self.__dg__ = dg self.__ui__ = ui SomeSqlObject.__init__ (self, v1, None) # 注意:这个类现在被锁定了
-
好吧,那失败了……也许我必须用不同的方法来回答这个问题……
-
尝试在python3中复制文件对象是行不通的,
SomeSqlObject.get_root()实际上返回了什么?
标签: python object python-3.x