标签:__ Tty .__ python 新式 经典 print class
python3中默认使用新式类,或者说pyhon3只存在新式类,不存在经典类
新式类和经典类的区别:
1.多继承时,寻找某个属性的顺序有区别,新式类使用c3算法寻找类中对象,经典类使用深度优先算法寻找.
在多继承的情况下,某些类中有同名对象时,这种顺序,可能导致一种新的产生bug的方式.
但是为什么不设置一些独特的变量名称来避免混淆呢?在故意重写对象时,应该使继承的类"关系分明"比如
class A(): i=7 j=5 class B(A): i=3 class C(B): q=1
此时C-B-A,而不应该
class A(): i=7 j=5 class B(A): i=3 class C(B,A): q=1
此时关系就乱了
2.类的类型和类的基类和类的父类和实例的类型和实例的父类均不同
只看新式类:
class Tty(): pass if __name__ == '__main__': t = Tty() print(type(Tty)) print(Tty.__class__) print(Tty.__base__) print(type(t)) print(t.__class__)
这里也印证了一种说法,python3中类就是类型,类型就是类
对于新式类的这种特点,我并没有想出什么有用的东西
标签:__,Tty,.__,python,新式,经典,print,class 来源: https://www.cnblogs.com/lqs244/p/14359131.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。