Python -- 对象和面向对象
2010-04-16 17:53
225 查看
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函数,类方法,或属性的名字以两个下划线开始,它是私有的。
在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函数,类方法,或属性的名字以两个下划线开始,它是私有的。
相关文章推荐
- python | 面向对象 | 对象的生命周期
- Python面向对象(一)对象和类
- python-面向对象(股票对象举例)
- 《Dive into Python》读书笔记之对象和面向对象
- python 面向对象、类、对象
- Python_day8_面向对象(多态、成员修饰符、类中特殊方法、对象边缘知识)、异常处理之篇
- Python 面向对象(二)—— 获取对象信息
- Python面向对象——内置对象的功能扩展
- python面向对象——类与对象
- python面向对象——类和对象
- 18.python面对对象编程(一)—什么是面向对象,类和实例,访问限制
- ZODB入门 -- 如何通过面向对象的动态语言 Python 使用对象数据库
- 【python 面向对象】 python对象学习笔记《1》
- 简明 Python 教程 / 面向对象的编程 / 类与对象的方法
- python面向对象(类和对象及三大特性)
- Python面向对象和图形用户界面(一)---- 面向对象
- python-面向对象(指数对象举例)
- Python面向对象的基础知识:类Class,对象(Object),实例(Instance)
- 六、定制数据对象(Python的面向对象) ----- 打包代码与数据
- python 面向对象之封装与类与对象