据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切。他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生 ...
分类:
编程语言 时间:
2018-05-20 18:23:59
阅读次数:
190
__construct(): 构造函数 __destruct():析构函数 __call() 在对象中调用一个不可访问方法时,__call() 会被调用。 __get() 读取不可访问属性的值时,__get() 会被调用。 __set() 在给不可访问属性赋值时,__set() 会被调用。 __is ...
分类:
Web程序 时间:
2018-05-10 19:37:43
阅读次数:
181
据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切。他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生 ...
分类:
编程语言 时间:
2018-05-06 21:23:30
阅读次数:
239
本文分为如下几个部分 概念 地址问题 作为函数参数 可变参数在类中使用 函数默认参数 类的实现上的差异 概念 可变对象与不可变对象的区别在于对象本身是否可变。 python内置的一些类型中 可变对象:list dict set 不可变对象:tuple string int float bool 举一 ...
分类:
编程语言 时间:
2018-04-24 17:31:18
阅读次数:
212
构造函数 重写普通方法和特殊的构造函数 调用未关联的超类构造函数 使用函数super 基本的序列和映射协议 对于这些方法,还有一些额外的要求。 1. 对于序列:如果键为负整数,应从末尾往前数。换而言之,x[-n]应与x[len(x)-n]等效。 2.如果键的类型不合适(如对序列使用字符串键),可能引 ...
分类:
其他好文 时间:
2018-04-08 13:19:03
阅读次数:
184
基本的魔法方法 __new__(cls[, ...]) 用来创建对象 1. __new__ 是在一个对象实例化的时候所调用的第一个方法 2. 它的第一个参数是这个类,其他的参数是用来直接传递给 __init__ 方法 3. __new__ 决定是否要使用该 __init__ 方法,因为 __new_... ...
分类:
编程语言 时间:
2018-03-29 21:12:42
阅读次数:
229
//__new__(cls[,....]) //对象实例化调用的第一个方法,它的第一个参数是这个类,而其他参数会直接传递给__init__()方法 //需要在基类的基础上对其进行修改时重写__new__()方法 //__del__()方法 //只有在该类实例化的对象全部被del掉时,才调用__del... ...
分类:
编程语言 时间:
2018-03-25 12:38:13
阅读次数:
394
魔法方法、属性 准备工作 为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始。 在这个两个类中NewType是新类,OldType是属于旧类,如果前面加上 _metaclass_=type ,那么两个类都属于新类。 构造方法 构造方法与其的方法不一样,当一个对象被创建 ...
分类:
编程语言 时间:
2018-03-22 19:17:15
阅读次数:
183
魔法方法 1、何为魔法方法: Python中,一定要区分开函数和方法的含义; 1.函数:类外部定义的,跟类没有直接关系的;形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法也可以认为是属性);分为两种: ① python自动产生的(魔法方法):一般形式为 __f ...
分类:
其他好文 时间:
2018-03-17 16:11:34
阅读次数:
1050
1. 简介 本指南归纳于我的几个月的博客,主题是 魔法方法 。 什么是魔法方法呢?它们在面向对象的Python的处处皆是。它们是一些可以让你对类添加“魔法”的特殊方法。 它们经常是两个下划线包围来命名的(比如 __init__ , __lt__ )。但是现在没有很好的文档来解释它们。 所有的魔法方法 ...
分类:
编程语言 时间:
2018-03-14 12:57:43
阅读次数:
209