类
类提供了将数据和功能捆绑在一起的方法。 创建新类会创建一种新类型的对象,从而允许创建该类型的新实例。 每个类实例都可以附加属性以保持其状态。 类实例还可以具有用于修改其状态的方法(由其类定义)。 与其他编程语言相比,Python的类机制添加了具有最少新语法和语义的类。 它是C ++和Modula-3中的类机制的混合体。 Python类提供面向对象编程的所有标准功能与C ++和Modula-3不同,内置类型可以用作用户扩展的基类。 此外,与C ++一样,大多数具有特殊语法(算术运算符,下标等)的内置运算符都可以重新定义为类实例。(重载)
1. 命名和对象
对象具有特性,多个名称(在多个范围内)可以绑定到同一个对象。 这在其他语言中称为别名。
2. Python 作用域(范围)和命名空间
在介绍类之前,我首先要告诉你一些Python的范围规则。类定义对命名空间有一些巧妙的技巧,你需要知道范围和命名空间如何工作才能完全理解处理机制。
命名空间是从名称到对象的映射。大多数名称空间当前都是作为Python Dict字典映射实现的,但这通常不会明示(性能除外),并且可能在将来发生变化。
顺便说一下,我对word后面的任何名称使用word属性 - 例如,在表达式z.real中,real是对象z的属性。
命名空间是在不同时刻创建的,具有不同的生命周期。 包含内置名称的命名空间是在Python解释器启动时创建的,永远不会被删除。 读入模块定义时,将创建模块的全局命名空间.
调用函数时会创建函数的本地名称空间,并在函数返回或引发函数内未处理的异常时删除。
范围是Python程序的文本区域,可直接访问命名空间。
如果名称声明为全局,则所有引用和赋值将直接转到包含模块全局名称的中间作用域。要重新绑定在最内层范围之外找到的变量,可以使用非本地语句;
Python的一个特殊之处在于 - 如果没有全局语句生效 - 对名称的赋值总是进入最内层范围。
全局声明可用于表明特定变量存在于全局范围内,应该在那里调用;非本地语句表明特定变量存在于封闭范围内,应该在那里调用。
例子
def scope_test():
def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_glob