![Python面向对象编程(第4版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/871/51393871/b_51393871.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.1 添加属性
现在我们有了一个基本的类,但它没什么实际用处。它没有包含任何数据,也不能做任何事。我们如何给指定的对象添加属性?
实际上,不需要改动类定义,我们可以通过点标记法为实例对象设定任意属性。下面是一个示例:
![](https://epubservercos.yuewen.com/6C913C/30303410104284906/epubprivate/OEBPS/Images/48324_68_1.jpg?sign=1739326250-ZjhzAcaLFr9q8emABXirKov8AzTTUbTn-0-d21b7b493b4d2a6758239b7516aa65f4)
如果我们执行这段代码,最后的两个print语句将告诉我们两个对象新属性的值:
![](https://epubservercos.yuewen.com/6C913C/30303410104284906/epubprivate/OEBPS/Images/48324_68_2.jpg?sign=1739326250-u8f351erDPHaMh75GKMw30RT0N1HjnJK-0-a0fadfee5f93713094b863aae93542f6)
这段代码先创建了一个空的Point类,没有任何数据和行为。然后创建了这个类的两个实例,并分别赋予它们在二维坐标系中定位一个点的x和y坐标值。为对象属性赋值的语法是<object>.<attribute>=<value>。这种方法被称为点标记法(dot notation)。这里的值可以是任何类型:Python基本类型、内置数据类型或其他的对象,甚至可以是一个函数或另一个类!
像这样创建属性会使mypy工具感到困惑。我们没办法直接在Point类定义上添加类型提示。类型提示通常被添加到方法或属性定义中。我们可以在赋值语句中使用类型提示,像这样:p1.x:float=5。在2.2.3节中会讲到一个更好的添加类型提示和属性的方法。不过,我们先在类定义中添加一些行为。