Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147347
  • 博文数量: 61
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 590
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-03 15:26
文章分类

全部博文(61)

文章存档

2010年(9)

2009年(52)

我的朋友

分类: Python/Ruby

2009-03-19 09:48:26

第 5 章 对象和面向对象
在fileinfo.py中修改第30行为:
from collections import UserDict

类的创建
    模块化
import module 和 from module import sth.的区别
#import module vs. from module import
>>> import types
>>> types.FunctionType

>>> FunctionType
Traceback (innermost last):
  File "", line 1, in ?
NameError: There is no variable named 'FunctionType'
>>> from types import FunctionType
>>> FunctionType

    
    类
    from collections import UserDict
    class FileInfo(UserDict):
   
    在 Python 中,类的基类只是简单地列在类名后面的小括号里。所以 FileInfo 类是从 UserDict 类继承来的
    Python 支持多重继承。在类名后面的小括号中,你可以列出许多你想要的类名,以逗号分隔
   
   
    初始化并开始类编码
    __init__()使用

    了解何时去使用 self 和 __init__
   
    self的使用:
    1.定义自己类方法时必须将self作为方法的第一个参数,包括__init__
    2.从自己定义的类中调用父类的方法时,必须包括self
    3.从类外部调用自己的类方法时,不必对self参数制定值
   
    无论何时子类想扩展父类的行为,后代方法必须在适当的时机,使用适当的参数,显式调用父类方法。
    Python没有任何形式的重载,子类的方法总是覆盖父类的方法
   
类的实例化


#####################
#Py3k class test.py
#####################
from collections import UserDict

class FileInfo(UserDict):
    '''test class use'''
    def __init__(self,filename=None):
        UserDict.__init__(self)
        self["name"]=filename
#####################
#Py3k class test.py end
#####################


>>> import test
>>> f = test.FileInfo("F:\\RO.mp3")
#还记得什么时候 __init__ 方法将它的 filename 参数赋给 self["name"] 吗?
#哦,答案在这。在创建类实例时你传入的参数被正确发送到 __init__ 方法中
#(当我们创建类实例时,我们所传递的参数被正确地发送给 __init__ 方法)
#(随同一起传递的还有对象的引用,self,它是由 Python 自动添加的)
#__init__时的参数在创建实例时就赋值
>>> f.__class__

# 这里和2.6有区别,2.6返回的是地址
>>> f.__doc__
'test class use'
>>> f
{'name': 'F:\\RO.mp3'}

垃圾回收交给py做就ok~

UserDict:封装类
(to be continue...)


作品loseblue创作,采用进行许可。
阅读(774) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~