我正在编写一个简单的XML序列化程序,并发现了一个奇怪的问题。如果序列化的对象继承自 object ,那么一切正常 - 我可以序列化和反序列化它。
但是如果我没有明确指定 object ,尽管 object 在mro中,它仍无法反序列化:
即
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__'
非常感谢任何想法。
答案 0 :(得分:3)
旧式类(非object
派生的类)没有__new__()
。
答案 1 :(得分:0)
测试实例是否为旧式clase(失败)的一种方法是使用
type(my_instance) is types.InstanceType
将评估为旧式类的True
。
答案 2 :(得分:0)
关于为什么使用__new()__
以及如何以更干净的方式检查创建新实例的一些输入:
https://mail.python.org/pipermail/tutor/2008-April/061426.html
覆盖__new()__
方法to be found here的提示。