7.1 对象的魔力
多态:不同的对象或类调用同一个函数时执行不同的功能
封装:隐藏对象具体的实现细节
继承:使一个类具有另一个类的特性和方法
和C++理念相同
7.2 类和类型
私有化:使用双下划线
class A(B,C):创建类A并且继承了类B,C,若B,C含有相同的方法则B会覆盖C中的此方法。有前后顺序的
检查继承:issuclass(A,B)——判断A的父类(超类/基类)是不是B
本章新函数
callable(object)
中文说明:检查对象object是否可调用。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
注意:类是可调用的,而类的实例实现了call()方法才可调用。
版本:该函数在python2.x版本中都可用。但是在python3.0版本中被移除,而在python3.2以后版本中被重新添加。
>>> callable(0)
False
>>> callable("mystring")
False
>>> def add(a, b):
… return a + b
…
>>> callable(add)
True
>>> class A:
… def method(self):
… return 0
…
>>> callable(A)
True
>>> a = A()
>>> callable(a)
False
>>> class B:
… def __call__(self):
… return 0
…
>>> callable(B)
True
>>> b = B()
>>> callable(b)
True
getattr: 如果存在name属性(方法)则返回name的值(方法地址)否则返回default值。
getattr(foo,'name','NA') #存在name属性,所以返回其value
'fengyun'
getattr(foo,'age','NA')
'NA'
hasattr(object,name):判断object中是否具有name属性
hasattr(foo,’setName’) #判断setName是否存在,存在则返回True。
isinstance(object,class):判断对象是否是类的实例
issubclass(A,B):确定A是不是B的子类
random.choice(sequence):从非空序列随机选择元素
setattr(object,name,value):将对象object的属性名为name的属性的值设为value
type:返回对象的类型