笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

9.3. 初识类

发布者: 三寸日光

类引入了一些新语法:三种新的对象类型和一些新的语义。

9.3.1. 类定义语法

类定义最简单的形式如下:

class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>

类的定义就像函数定义( def 语句),要先执行才能生效。(你当然可以把它放进 if 语句的某一分支,或者一个函数的内部。)

习惯上,类定义语句的内容通常是函数定义,不过其它语句也可以,有时会很有用——后面我们再回过头来讨论。类中的函数定义通常包括了一个特殊形式的参数列表,用于方法调用约定——同样我们在后面讨论这些。

进入类定义部分后,会创建出一个新的命名空间,作为局部作用域——因此,所有的赋值成为这个新命名空间的局部变量。特别是函数定义在此绑定了新的命名。

类定义完成时(正常退出),就创建了一个 类对象 。基本上它是对类定义创建的命名空间进行了一个包装;我们在下一节进一步学习类对象的知识。原始的局部作用域(类定义引入之前生效的那个)得到恢复,类对象在这里绑定到类定义头部的类名(例子中是 ClassName )。

9.3.2. 类对象

类对象支持两种操作:属性引用和实例化。

属性引用 使用和 Python 中所有的属性引用一样的标准语法:obj.name 。类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

class MyClass:
    """A simple example class"""
    i = 12345
    def f(self):
        return 'hello world'

那么 MyClass.i 和 MyClass.f 是有效的属性引用,分别返回一个整数和一个方法对象。也可以对类属性赋值,你可以通过给 MyClass.i 赋值来修改它。 __doc__ 也是一个有效的属性,返回类的文档字符串: "A simple example class" 。

类的 实例化 使用函数符号。只要将类对象看作是一个返回新的类实例的无参数函数即可。例如(假设沿用前面的类):

x = MyClass()

以上创建了一个新的类 实例 并将该对象赋给局部变量 x 。

这个实例化操作(“调用”一个类对象)来创建一个空的对象。很多类都倾向于将对象创建为有初始状态的。因此类可能会定义一个名为 __init__() 的特殊方法,像下面这样:

def __init__(self):
    self.data = []

类定义了 __init__() 方法的话,类的实例化操作会自动为新创建的类实例调用 __init__() 方法。所以在下例中,可以这样创建一个新的实例:

x = MyClass()

当然,出于弹性的需要, __init__() 方法可以有参数。事实上,参数通过 __init__() 传递到类的实例化操作上。例如,

>>> class Complex:
...     def __init__(self, realpart, imagpart):
...         self.r = realpart
...         self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)


12下一页

最新评论

Python3编程手册
  1. Python 入门指南

  2. 1. 开胃菜

  3. 2.1. 调用 Python 解释器

  4. 2.2. 解释器及其环境

  5. 3. Python 简介

  6. 3.1. 将 Python 当做计算器

  7. 3.2. 编程的第一步

  8. 4. 深入 Python 流程控制

  9. 4.1. if 语句

  10. 4.2. for 语句

  11. 4.3. range() 函数

  12. 4.4. break 和 continue 语句

  13. 4.5. pass 语句

  14. 4.6. 定义函数

  15. 4.7. 深入 Python 函数定义

  16. 4.8. 插曲:编码风格

  17. 5. 数据结构

  18. 5.1. 关于列表更多的内容

  19. 5.2. del 语句

  20. 5.3. 元组和序列

  21. 5.4. 集合

  22. 5.5. 字典

  23. 5.6. 循环技巧

  24. 5.7. 深入条件控制

  25. 5.8. 比较序列和其它类型

  26. 6. 模块

  27. 6.1. 深入模块

  28. 6.2. 标准模块

  29. 6.3. dir() 函数

  30. 6.4. 包

  31. 7. 输入和输出

  32. 7.1. 格式化输出

  33. 7.2. 文件读写

  34. 8. 错误和异常

  35. 8.1. 语法错误

  36. 8.2. 异常

  37. 8.3. 异常处理

  38. 8.4. 抛出异常

  39. 8.5. 用户自定义异常

  40. 8.6. 定义清理行为

  41. 8.7. 预定义清理行为

  42. 9. 类

  43. 9.1. 术语相关

  44. 9.2. Python 作用域和命名空间

  45. 9.3. 初识类

  46. 9.4. 一些说明

  47. 9.5. 继承

  48. 9.6. 私有变量

  49. 9.7. 补充

  50. 9.8. 异常也是类

  51. 9.9. 迭代器

  52. 9.10. 生成器

  53. 9.11. 生成器表达式

  54. 10. Python 标准库概览

  55. 10.1. 操作系统接口

  56. 10.2. 文件通配符

  57. 10.3. 命令行参数

  58. 10.4. 错误输出重定向和程序终止

  59. 10.5. 字符串正则匹配

  60. 10.6. 数学

  61. 10.7. 互联网访问

  62. 10.8. 日期和时间

  63. 10.9. 数据压缩

  64. 10.10. 性能度量

  65. 10.11. 质量控制

  66. 10.12. “瑞士军刀”

  67. 11. 标准库浏览

  68. 11.1. 输出格式

  69. 11.2. 模板

  70. 11.3. 使用二进制数据记录布局

  71. 11.4. 多线程

  72. 11.5. 日志

  73. 11.6. 弱引用

  74. 11.7. 列表工具

  75. 11.8. 十进制浮点数算法

  76. 12. 接下来?

  77. 13. 交互式输入行编辑历史回溯

  78. 13.1. 行编辑

  79. 13.2. 历史回溯

  80. 13.3. 快捷键绑定

  81. 13.4. 其它交互式解释器

  82. 14. 浮点数算法:争议和限制

  83. 14.1. 表达错误

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-5-20 10:12 , Processed in 0.026794 second(s), 18 queries .

© 2001-2020

返回顶部