随笔分类 -  python魔法方法

摘要:属性访问控制 所谓的属性访问控制就是控制点号访问属性的行为,而且不仅是类的外部,连类的内部也受控制,代码见真章,边看代码边解释: __getattr__(self, item) __getattr__(self, item) 定义当访问不存在的属性时的行为,注意是不存在的属性。 测试: 其行为和没定 阅读全文
posted @ 2016-07-25 01:36 scolia 阅读(4096) 评论(0) 推荐(1)
摘要:类型转换魔法 类型转换魔法其实就是实现了str、int等工厂函数的结果,通常这些函数还有类型转换的功能,下面是一些相关的魔法方法: __int__(self) 转换成整型,对应int函数。 __long__(self) 转换成长整型,对应long函数。 __float__(self) 转换成浮点型, 阅读全文
posted @ 2016-07-22 00:57 scolia 阅读(3627) 评论(0) 推荐(0)
摘要:自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像 python 的内置序列(dict,tuple,list,string等)。 如果要实现这个功能,就要遵循 python 的相关的协议。所谓的协议就是一些约定内容。例如,如果要将一个类要实现迭代,可以实现__iter__( 阅读全文
posted @ 2016-07-21 00:47 scolia 阅读(4378) 评论(0) 推荐(1)
摘要:反射运算 什么是反射运算符,其实就是反转了两个对象,下面先看一个普通运行符的实现: 在普通的加法运算中,调用的是+号左边的__add__方法,调用谁谁就为self。所以左边是self,右边为other,所以结果如上。 而反射运行其实就是交换这两者,下面看例子: 首先,不同的地方是这里调用的+后右边的 阅读全文
posted @ 2016-07-19 22:49 scolia 阅读(4387) 评论(2) 推荐(5)
摘要:在比较的魔法方法中,我们讨论了魔法方法其实就是重载了操作符,例如>、<、==等。而这里,我们继续讨论有关于数值的魔法方法。 1.单目运算符或单目运算函数 __pos__(self) 实现一个取正数的操作(比如 +some_object ,python调用__pos__函数) __neg__(self 阅读全文
posted @ 2016-07-18 17:16 scolia 阅读(3096) 评论(0) 推荐(0)
摘要:在python2.x的版本中,支持不同类型的比较,其比较原则如下: 内置类型: 1.同一类型: 1.1)数字类型:包含int、float、long、complex、bool(bool类型是int的子类,且True=1, False=0)。就按照数字的大小进行比较,例如: 1.2)非数字类型: 1.2 阅读全文
posted @ 2016-07-17 23:12 scolia 阅读(2496) 评论(0) 推荐(3)