<
divnotes
Table of Contents
1 classes and objects
1.1 类成员和对象成员
类成员相当于C++中的static成员变量,实例成员是和C++中的成员变量对应的,如下是类 成员:
>>> class counter: ... count = 0 1 ... def __init__(self): ... self.__class__.count += 1 2 ... >>> counter <class __main__.counter at 010EAECC> >>> counter.count 3 0 >>> c = counter() >>> c.count 4 1 >>> counter.count 1 >>> d = counter() 5 >>> d.count 2 >>> c.count 2 >>> counter.count 2
1.2 特殊函数
函数名以两个下划线开始和结束的函数名为特殊函数 如_setitem_和_getitem_是和[]操作相关联的
class MyDict: def __init__(self): self.data = {} def __setitem__(self, k, v): self.data[k] = v print('__setitem__(',k,',',v,')') def __getitem__(self, k): print('__getitem__(',k,')=',self.data.get(k,0)) return self.data.get(k,0) d = MyDict() d[1] = 2 print(d[1])
1.3 私有函数
函数名以两个下划线开始且不是两个下划线结束的函数 变量名同样遵循次规则
class PrivateFunc: def __init__(self): self.ary = [1,2,3] def __listAry(self): for i in self.ary: print(i) pf = PrivateFunc() try: pf.__listAry() except AttributeError as err: print('func not exist: ', err)
从程序看出,python其实是把函数名和变量名改名了,改名后的私有成员同样是public的, 可以直接调用
Date: 2013-04-16 16:39:51 中国标准时间