0

我正在编写一个简单的 XML 序列化程序并遇到了一个奇怪的问题。如果一个被序列化的对象显式地从对象继承,那么一切正常——我可以序列化和反序列化它。

但是,如果我没有明确指定对象,尽管事实上对象在 mro 中,但它无法反序列化:

IE

class ScanResults(object):

工作正常,但是

class ScanResults:

不工作

MRO :[<class 'aplib.scanresults.ScanResults'>, <class 'aplib.pyxmlser.pyxmlser'>, <type 'object'>]

Traceback (most recent call last):
... 
   classinst = classobj.__new__(classobj, None, None)

AttributeError: class AccessPoint has no attribute '__new__'

任何想法都非常感谢。

4

3 回答 3

3

旧式类(那些不是从 派生的object)没有__new__().

于 2013-09-29T17:35:36.693 回答
0

关于为什么使用__new()__以及如何以更干净的方式检查以创建新实例的一些输入:

https://mail.python.org/pipermail/tutor/2008-April/061426.html

覆盖__new()__方法的提示可在此处找到

于 2013-09-29T17:51:00.967 回答
0

测试实例是否是旧式类(失败)的一种方法是使用

type(my_instance) is types.InstanceType

这将评估True为旧式类。

于 2013-09-29T17:47:22.873 回答