码迷,mamicode.com
首页 > 编程语言 > 详细

python3 之 类

时间:2019-08-14 14:35:25      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:pac   python程序   属性   python   不可变   全局   本地   命名空间   程序员   

目录:

  1. 名称和对象
  2. 作用域和命名空间
  3. 类定义
  4. 类对象
  5. 实例对象
  6. 方法对象
  7. 类和实例变量
  8. 继承和多继承
  9. 派生
  10. 多态

类提供了一种 组合数据和功能 的方。创建一个新类意味着:创建一个新 类型  的对象,从而允许创建一个该类型的新 实例。

每个类的实例可以拥有: 保存自己状态的属性。

一个类的实例也可以有改变自己状态的方法(定义在类中的)。

一、名称和对象

  对象具有个性,多个名称(在多个作用域内)可以绑定到同一个对象,这在其他语言中成为别名。

  在处理不可变的基本类型(数字、字符串、元祖)时,可以安全的忽略它。

  但是,对可变对象如(列表、字典、集合等),python代码的语义会产生惊人的影像。

二、作用域和命名空间

   在介绍类之前,我首先要告诉你一些Python的作用域规则。类定义对命名空间有一些巧妙的技巧,你需要知道作用域和命名空间如何工作才能完全理解正在发生的事情。顺便说一下,关于这个主题的知识对任何高级Python程序员都很有用。

  让我们从一些定义开始:

  1. namespace(命名空间)是一个从名字到对象的映射:
    •  当前,大部分命名空间都由python字典实现,一般情况下不会去关注它们(除了要面对性能问题时),而且也有可能在将来更改;
    •    几个命名空间的例子:
      • 存放内置函数的集合(包含abs()这样的函数,和内建的异常等)
      • 模块中的全局名称
      • 函数调用中的局部名称
      • 从某种意义讲,对象的属性集合也是一种命名空间的形式
    • 注意:不同命名空间中的名称之间绝对没有关系。例如:两个不同模块都可以定义一个my_max()函数,而不会产生混淆(模块的用户必须在其前面加上模块名称)。
  2. 属性:
    •  任何跟在 “点” 之后的名称都称为:属性;
  3. 生存期:
    •  不同时刻创建的命名空间拥有不同的生存期;
    •     内置名称的命名空间是在python解释器启动时创建的,永远不会删除;
    •     模块的全局命名空间,在模块定义被读入时创建,通常模块的命名空间会持续到解释器退出;
    •     被解释器的顶层调用执行的语句,被认为是__main__模块调用的一部分(从一个脚本文件读取或交互式地读取),因此它们拥有自己的全局命名空间;
    •     内置名称实际也存在于一个模块中,称作:builtins。
  4. 函数的本地命名空间:
    •  一个函数的本地命名空间,在这个函数被调用时创建,并在函数返回或抛出一个不在函数内部处理的错误时被删除
    •     每次,递归调用都会有它自己的本地命名空间
  5. 作用域:
    •  指

python3 之 类

标签:pac   python程序   属性   python   不可变   全局   本地   命名空间   程序员   

原文地址:https://www.cnblogs.com/gengyufei/p/11350691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!