我在某些代码上跑了pylint,并对老式班级抱怨。将旧式班级改写为新班级
我可以通过简单地改变纠正这个:
class MyClass:
到:
class MyClass(object):
或者是有什么更多的参与?
我在某些代码上跑了pylint,并对老式班级抱怨。将旧式班级改写为新班级
我可以通过简单地改变纠正这个:
class MyClass:
到:
class MyClass(object):
或者是有什么更多的参与?
在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
它可以满足99%的时间。新风格类的[方法解析顺序](http://python-history.blogspot.com/2010/06/method-resolution-order.html)规则已更改,而旧代码可能依赖于在下面表现不同的角落案例这些变化。 –
@KevinThibedeau,感谢您的链接,这是一个有趣的阅读。 – miku
这是非常多的。 – BrenBarn
简单的回答:是的。 –
有几个角落的情况,在继承树中添加'object'可能会破坏事物。添加它,看你的程序是否以奇怪的方式破解。如果是这样,你做了一些你可能不应该放在第一位的东西:-) – mgilson