Python面向对象编程(第4版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.1 添加属性

现在我们有了一个基本的类,但它没什么实际用处。它没有包含任何数据,也不能做任何事。我们如何给指定的对象添加属性?

实际上,不需要改动类定义,我们可以通过点标记法为实例对象设定任意属性。下面是一个示例:

如果我们执行这段代码,最后的两个print语句将告诉我们两个对象新属性的值:

这段代码先创建了一个空的Point类,没有任何数据和行为。然后创建了这个类的两个实例,并分别赋予它们在二维坐标系中定位一个点的xy坐标值。为对象属性赋值的语法是<object>.<attribute>=<value>。这种方法被称为点标记法dot notation)。这里的值可以是任何类型:Python基本类型、内置数据类型或其他的对象,甚至可以是一个函数或另一个类!

像这样创建属性会使mypy工具感到困惑。我们没办法直接在Point类定义上添加类型提示。类型提示通常被添加到方法或属性定义中。我们可以在赋值语句中使用类型提示,像这样:p1.x:float=5。在2.2.3节中会讲到一个更好的添加类型提示和属性的方法。不过,我们先在类定义中添加一些行为。