[ python ] 类和实例

1) python支持多继承。 如果两个超类有相同的方法,那么哪个类在前,就使用哪个的方法,另一个类的方法会被屏蔽。

2) 调查继承。issubclass(subclass,superclass)可以判断subclass是否superclass的子类。

3) 调查超类。通过subclass.__bases__ 可以得到subclass的超类组成的列表。因为python是支持多继承的,所以超类可能有多个。

4) 查检对象是否某个类的实例。isinstance(s,subclass)、isinstance(s,superclass)。 注意,instance()方法是可以往上追朔的。如果只能知道某对象属于哪个类(不算超类),可以使用s.__class__属性。另外,type()方法也可以帮助查看对象的类型。

5) 类变量和实例变量。python中的类变量有点奇怪,如果实例中没有设置同名的实例变量,那么默认其同名实例变量值为类变量的值。但只可读,不可改。如果修改,只会改自己的实例变量,影响不到类变量。

6) python事实上并不真正支持私有变量。其私有变量是通过在方法名前加双下划线来实现的,虽然无法在实例中直接访问,但事实上python只是将所有以__为前辍的方法将其方法名变成了_类名_方法名的形式,只是个魔法,并非真的让其私有了,通过_类名_方法名还是可以访问到的。另外,__过于强制了,还可以像js一样,通过_这样的“约定”来让人知道它是个私有属性,但其实它还是可以被访问的,只是在from 模块名 import *的时候,带单下划线的方法不会被导入。(这点比js还是强些)

原文地址:https://www.cnblogs.com/cly84920/p/4426724.html