第七章 更加抽象

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:返回对象的类型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章