(8)类和对象

一、对象

1、多态

方法

绑定到对象特性上面的函数城为方法

鸭子类型:

2、封装

多态可以让用户对于不知道是什么类的对象进行方法调用,封装是可以不用关心对象是如果构建的而直接进行使用

继承

二、类

定义一个类

python2.0中,有旧式类和新式类的区别

新式类要用

 _metaclass_=type #确定使用新式类

创建一个类

_metaclass_=type
class Person:
    def setName(self,name):
        self.name=name
    def getName(self):
        return self.name
    def greet(self):
        print "Hello,world! I'm %s." % self.name

调用

定义对象

不像C# java还需要new。

直接使用 对象名=类名()即可

关于self 

self代表本类的实例

python的类方法里,至少要有一个参数self这也是和其他语言区别的地方

self不是固定的关键字,可以随便换,比如 this  ..但python里正常情况下都是用self

私有方法

定义时,在方法的前面加两个下划线表示此方法只能在该类中使用。(虽然也有方法能够调用它)

三、超类(父类)

class a:

class b(a):

a表示超类,b表示子类

判断是否有子类、超类的关系函数

issubclass(b,a)

如果a是b的子类,则返回true。   不是则返回false

如果想知道该类的基类,可以用 __bases__

检查一个对象是否是一个类的实例用 isinstance方法

可以看出 bb既是 b类的实例,也是a类的实例。因为 b是a的子类

判断对象属于哪个类用  __class__

四、多超类

一个子类可以继承多个父类

 

使用多重继承是要注意:

一个方法从多个父类继承,那么必须要注意父类的顺序,先继承的类中的方法会重写后继承的类中的方法。

比如上例 i类中有个方法add,j类中也有个方法add。那么 i类的add方法会重写j类的add方法

如果还有个e的方法和h类一样,继承了i类和j类。但是e类里也有个add方法。那么会优先调用子类的add方法

猜你喜欢

转载自www.cnblogs.com/buchizaodian/p/6920514.html