其他核心类型——用户定义的类

未匹配的标注

在本书后面将深度学习Python中的面向对象编程(一个可选但强大的语言特性,它通过支持自定义编程来减少开发时间)。然而,抽象地说,类定义了扩展核心类型的新对象类型,因此它们值得在这里快速了解一下。比如,假设希望有一个对雇员建模的对象类型。虽然在Python中没有这种特定的核心类型,但下面的用户定义类可能会满足要求:

>>> class Worker:
            def __init__(self, name, pay): # 创建时初始化
                self.name = name # self 是新对象
                self.pay = pay
      def lastName(self):
                return self.name.split()[-1] # 按空格分割字符串
            def giveRaise(self, percent):
                self.pay *= (1.0 + percent) # 就地更新报酬

此类定义了一个新的对象类型,它将有namepay属性(有时被称作状态信息),还有被编码为函数(通常叫做方法)的两个行为片段。像调用函数那样调用类来产生新类型的实例,类方法自动接收实例,该实例被指定的方法调用(在self参数中)处理:

>>> bob = Worker('Bob Smith', 50000) # 创建两个实例
>>> sue = Worker('Sue Jones', 60000) # 每个实例有 name 和 pay 属性
>>> bob.lastName() # 调用方法:bob 是 self
'Smith'
>>> sue.lastName() # sue 是 self 实体
'Jones'
>>> sue.giveRaise(.10) # 更新 sue 的报酬
>>> sue.pay
66000.0

暗含的“self”对象是为什么称这种方法为面向对象模型的原因:在类的函数中总是有一个暗含的实体。然而,在某种意义上,基于类的类型是简单地建立在核心类型上并使用它的——比如,这里的用户定义的Worker对象只是字符串和数字的集合(分别是namepay),加上处理那两个内置对象的函数。

类更大的故事是它们的继承机制支持软件层次结构,使它们可以通过扩展进行自定义。通过编写新类而不是改变已经在正常工作的类来扩展软件。还应该知道类是Python的一个可选特性,更简单的内置类型如列表和字典通常是比用户编码的类更好的工具。然而,这远远超出了对象类型入门教程的范围,所以把它看成是一个预览吧;要完全理解使用类编码的用户定义类型,必须继续阅读。因为类建立在Python中的其它工具上,所以类是本书旅程中的主要目标之一。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~