第 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) |