Python -- 对象和面向对象

来源:互联网 发布:ubuntu 打开文件 编辑:程序博客网 时间:2024/04/30 05:15

1. 模块导入

在Python中,有两种方法可以导入模块:

  (1) import module,相当于Java中的import module

  (2) from module import *,相当于Java中的import module.*

   何时应该使用from module import:

    a)如果经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名

    b)如果想要有选择地导入某些属性和方法,而不想要其它的

    c)如果模块包含的属性和方法与自己的某个模块同名,使用些方法来导入模块来避免名字冲突

  Caution:

  尽量少用from module import *,因为判定一个特殊的函数或属性是从哪来的有些困难,并且会造成高度和重构都困难。

2. 类的定义

    (1)在Python中用Class来定义一个类

    (2)如果类中没有定义任何方法或属性,可以使用Pass关键字。特别是,当删空函数或类时,糨是一个很好的占位符。

    (3)在Python中,类的基类只是简单地列在类名后面的小括号里。如:class FileInfo(UserDict):

        UserDict是基类,而且FileInfo类是从UserDict类继承来的。

        Python支持多重继承。只要在类名后面的小括号中列出许多要继承的类名,并且以逗号分隔就可以了。

    (4)__init__在Python中可以得到最接近构造函数的东西,并且它也扮演着非常相似的角色。所以它并不是构造函数,因为对象在调用__init__时已经被构造出来了。

    __init__方法是可选的,但是一旦定义了,就必须记得显示调用父类的__init__方法(如果它定义了)

    (5)每个类方法的第一个参数,包括__init__,都是指向类的当前实例的引用。按照习惯这个参数总是被称为self。在__init__方法中,self指向新创建的对象;在其它的类方法中,它指向方法被调用的类实例。尽管当定义方法时你需要明确指定self,但在调用方法时,不用指定它 ,Python会自动加上的。

    def __init__(self, filename = None):

    当从类中调用一个父类的一个方法时,必须包括self参数。

3. 类的实例化

    (1)在Python中不需要明确地释放实例,因为当指派给它们的变量超出作用域时,它们会被自动地释放。因此,内存泄漏在Python中很少见。

4. 类的封装

    (1)Python支持数据属性。

    (2)Python没有任何形式的函数重载。

5. 专用类方法

    除了普通的类方法,Python类还可以定义专用方法。专用方法是在特殊情况下或当使用特别语法时由Python替你调用的,而不是在代码中直接调用。

6. 类属性

    类属性既可以通过直接对类的引用,也可以通过对类的任意实例的引用来使用。

     在Python中,只有类属性可以定义在类中,数据属性定义在__init__方法中。

     类属性可以作为类级别的常量来使用,但是它们不是真正的常量。

7. 私有函数

    在Python中的私有概念:

     a)私有函数不可以从它们的模块外面被调用

     b)私有类方法不能够从它们的类外面被调用

     c)私有属性不能够从它们的类外面被访问

     如果一个Python函数,类方法,或属性的名字以两个下划线开始,它是私有的。

原创粉丝点击