第7章 更加抽象
7.1 对象的魔力
□多态:意味着可以对不同类的对象使用同样的操作。
□封装:对外部世界隐藏对象的工作细节。
□继承:以普通的类为基础建立专门的类对象。
7.1.1 多态
多态意味着,就算不知道变量所引用的对象类型是什么,还是能对它进行操作,而它也会根据对象(或类)类型的不同而表现出不同的行为。
1. 多态和方法
>>> object.getPrice()
2.5
绑定到对象特性上面的函数,称为方法(method)。
7.1.2 封装
封装是对全局作用域中其他区域隐藏多余信息的原则。
特性(attribute,属性)是对象内部的变量;
方法更像是绑定到函数的属性。
7.1.3 继承
如果已经有了一个类,而又想建立一个非常类似的呢?新的类可能只是添加几个方法。在编写新的类时,又不想把旧类的代码全都复制过去。
7.2 类和类型
7.2.1 类到底是什么
7.2.2 创建自己的类
__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
注意 新式类的语法中,需要在模块或者脚本开始的地方放置赋值语句__metaclass__ = type
self是对于对象自身的引用。
>>> foo = Person()
>>> foo.setName('henry')
>>> foo
<__main__.Person