Python继承了旧样式类中的旧样式类型

时间:2016-01-17 18:30:17

标签: python inheritance

我正在使用csv.DictWriter类,我想继承它:

class MyObj(csv.Dictwriter):
    ...

但这种类型是旧式对象。 MyObj可以是新式的类,但仍然可以从csv.DictWriter继承吗?

2 个答案:

答案 0 :(得分:3)

是的,您只需要继承object

class MyObj(object, csv.DictWriter):
    def __init__(self, f, *args, **kw):
        csv.DictWriter.__init__(self, f, *args, **kw)

答案 1 :(得分:2)

正如丹尼尔states正确,你需要混合object。但是,使用新式类的一个主要方面是使用super,因此您应该使用

class MyObj(csv.DictWriter, object):
    def __init__(self, csvfile, mycustomargs, *args, **kwargs):
        super(MyOobj, self).__init__(csvfile, *args, **kwargs)
        ...

如上所述elsewhereobject应该是最后一个父级,否则object的默认方法(例如__str____repr__将覆盖其他父级实施,这当然不是你想要的......