12-3 python细碎概念

__metatype__==type 标记新式类
元类  用来创建类的东西,就是类的类。详见:blog.jobbole.com/21351/
__init__:构造方法   __del__:析造方法,在对象就要被垃圾回收之前调用,但是发生调用的具体时间不可知。
super()函数返回的是super对象,负责进行方法解析,当对其特性进行访问时,它会查找所有的超类(以及超类的超类),直到找到所有的特性为止或者引发一个AttributeError异常。

序列和映射是对象的集合。
__len__(self):序列的话,这就是元素的个数;对于映射来说,就是键-值对的数量;如果__len__返回0,对象就会被当作一个bool变量的假值。
__getitem__(self, key): 这个方法返回与所给键值对相应的值。对于一个序列,键是0~n-1的证书;对于映射来说,可以使用任何种类的键。
__setitem__(self, key, value): 按一定的方式存储和key相关的value,该值随后可使用__getitem来获取。只能为可以修改的对象定义这个方法。
__delitem__(self, key): 对一部分对象使用del语句时被调用,同时必须删除和元素对应的键。这个方法是为可修改对象定义的。

def checkIndex(key):
    if not isinstance(key, int):
        raise TypeError

    if key < 0:
        raise ValueError

class ArithmeticSequence:
    def __init__(self, start = 0, step = 1):
        qie
        self.start = start
        self.step = step
        self.changed = {}

    def __getitem__(self, key):
        try:
            return self.changed[key]
        except KeyError:
            return self.start + key * self.step

    def __setitem__(self, key, value):
        checkIndex(key)
        self.changed[key] = value
1.如果key没有修改,changed[key]引发异常,被except KeyError捕捉到 ,所以 无法return结束。
2.__init__(self, start=1, step = 1)
没有给出终点,所以该序列是无限序列

 property()  详见:python.jobbole.com/81967/

将自己写的模块放到C:\python目录下,1)import sys  2)sys.path.append('C:/python') //告诉解释器,除了从默认的目录寻找之外,还需要从目录c:\python中寻找模块,完成这个就能导入自己放在c:\python下的模块了。
导入模块只发生一次,第二次什么也不会发生。为了防止类似于相互引用产生无限递归。如果要重新载入模块,用reload()函数,用法是:module_name = reload(module_name)   python3.0已经取消。使用exec替代。
if __name__ == '__main__':     告知模块本身是作为程序运行还是导入到其他程序,在主程序中,__name__的值是'__main__',而在导入模块中,这个值被设定为模块的名字。由于模块中加入了测试语句,引入模块时,并不希望显示出测试语句的运行结果,所以添加该语句判断是主程序还是作为模块被引入程序。模块和主程序中都要加入这一判断语句。

将自己编写的模块放入sys.path的任意路径下,就能使用import引入
from module import *  只能导入模块下,__all__属性列表中的方法,其他方法显示导入
学习python最好的方法之一,学习源码。module.__file__,可以知道模块放的位置

re 正则表达式

通配符 
.  匹配一个的字符,除了换行符。  \\ 转义处理   []创建字符集[a~zA~Z0~9],匹配一个a~z的一个字符  [^a~z]反转字符,^如果脱字符出现在字符集的开头,那么你需要对其进行转义,除非你希望它作为否定运算符(换句话说,不要把它放在开头)。]、-应该放在字符集的开头或者反斜线转义。
选择符和子模式:'python|perl' | 为选择符号, p(ython|erl) ()为子模式,子模式中加上?,它就变成了可选项。
(pattern)*可以出现0次或者多次,(pattern)+可以出现1次或者多次 ,(pattern){m, n}循序模式出现m~n次  ^字符串开始,$字符串结尾。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值