将旧式类重写为新式类

3 投票
1 回答
911 浏览
提问于 2025-04-18 04:08

我在一些代码上运行了pylint,结果它给我提了个意见,说我的代码用了旧式类。

我可以通过简单地把:

class MyClass:

改成:

class MyClass(object):

来解决这个问题吗?

还是说这其中还有其他更复杂的事情需要处理?

1 个回答

2

在Python 2中,写

class MyClass(object):

就可以了。或者你可以换到Python 3,在那里

class MyClass:

也是可以的。

继承列表通常会列出基类(如果你想更深入了解,可以看看定制类创建的内容),所以列表中的每一项都应该是一个可以被继承的类对象。如果一个类没有继承列表,它默认会从基类对象继承;所以

class Foo:
    pass

等同于

class Foo(object):
    pass

另外,参考链接:https://docs.python.org/3/reference/compound_stmts.html#class

还有,正如@Kevin在评论中提到的,方法解析并不是简单的事情,使用多重继承时可能会导致意想不到的行为:http://python-history.blogspot.com/2010/06/method-resolution-order.html

撰写回答