Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

python的经典类和新式类



python里的class存在着经典类和新式类的区别。class() 为经典类,class(object) 为新式类。普通的使用差别也不大,但对类的使用多一点,则会有些注意事项。

1. 在class里继承于object的方式是python2系列中的,因为在python3中默认会加载object,所有的类都是新式类。但在维护更改遗留的python2项目时,需要注意两者区别。

 

2. 多重继承时,对于父类中的方法则有个遍历方式的不同。经典类是深度优先,新式类是广度优先(有的也有说是c3算法,在有些结果下和广度优先的结果一样)。

比如class D继承与B和C,B和C是A的子类,C有重写A中的方法。用经典类时,则会从D-B-A,找到A中的方法,而使用不到C中重写的方法。如果是新式类,则会是D-B-C-A的顺序,会调用到C中的方法。

 

3. 在经典类中,所有的类都是classobj类型,类的实例是instance类型。类与实例只有通过__class__属性进行关联。这样在判断实例类型时,就会造成不便:所有的实例都是instance类型,会出现两个不一样的类比较结果为真的情况。

经典类的实例是instance类型,而内置类的实例却不是,无法统一。也会造成麻烦。

 

4. 在python2中如果不指定object时,则没有__class__的方法可以使用。

 

因此在使用python2时,最好是加上object,使用python3则可以忽略。

下一篇:  iOS自动化使用appium关于gesture的更新
上一篇:  看西航动力研究所张小平事件有感

共有0条评论

添加评论

暂无评论