程序员自定义类型
举个例子:创建一个叫做Point
的内置类型,代表二维空间中 的一个点。
程序员自定义类型也被称作类(class)。
class Point:
"""Represents a point in 2-D space"""
头部语句表明新类的名称是Point
。主体部分是文档字符串,用来解释这个类的用途。
定义一个叫做Point
的类将创建了一个类对象(class object)。
>>> Point
<class '__main__.Point'>
由于Point
是定义在顶层的,所以它的“全名”是__main__.Point
。
类对象就像是一个用来创建对象的工厂。要创建一个点,可以像调用函数那样调用Point
。
>>> blank = Point()
>>> blank
<__main__.Point object at 0xb7e9d2ac>
返回值是一个Point
对象的引用,我们将它赋值给blank
。
创建一个新对象的过程叫做实例化(instantiation),这个新对象叫做这个类的一个实例(instance)。
每一个对象都是某种类的实例,所以对象和实例可以互换。
属性
可以使用点标记向一个实例进行赋值操作:
>>> blank.x = 3.0
>>> blank.y = 4.0
这个语法类似于从一个模块中使用变量的语法,比如math.pi
和string.whitespace
。这个例子中,我们是给一个类中已命名的元素赋值。这类元素叫做属性(attributes)。
说明一个对象及其属性的状态图叫做对象图(object diagram)。
变量blank
引用了一个Point
类,这个类拥有了两个属性。每个属性都引用了一个浮点数。
可以使用相同的语法读取一个属性的值:
>>> blank.y
4.0
>>> x = blank.x
>>> x
3.0
表达式blank.x
的意思是,“前往blank
所引用的对象并且获取x