动态创建的python对象没有__new__属性

时间:2013-09-29 17:30:46

标签: python serialization reflection

我正在编写一个简单的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__'

非常感谢任何想法。

3 个答案:

答案 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的提示。