python-面向对象(三)——类的特殊成员
2016-04-11 11:59
543 查看
类的特殊成员
1.__doc__
表示类的描述信息[b]2.__module__和__class__[/b]
[b] __module__表示当前操作的对象在哪个模块[/b][b]__class__表示当前操作的对象的类是什么[/b]
[b][b]3.__init__[/b][/b]
构造方法,通过类创建对象时,自动触发执行。
4.__del__
析构方法,当对象在内存中被释放时,自动触发执行。注:此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。
5.__call__
对象后面加括号,触发执行。[b]注:构造方法的执行是由创建对象触发的,即:对象=类名();而对于__call__方法的执行是由对象后加括号触发的,即:对象()或者类()()[/b]
6.__dict__
类或对象中的所有成员上文中我们知道:类的普通字段属于对象;类中的静态字段和方法等属于类,即:
7.__str__
如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值。8、__getitem__、__setitem__、__delitem__
用于索引操作,如字典。以上分别表示获取、设置、删除数据9、__getslice__、__setslice__、__delslice__
该三个方法用于分片操作,如:列表slice:切片切割10.__iter__
用于迭代器,之所以列表、字典、元组可以进行for循环,是因为类型内部定义了__iter__第一步:
第二步:
第三步:
以上步骤可以看出,for循环迭代的其实是iter([11,22,33,44]),所以执行流程可以变更为:
11.__new__和__metaclass__
上述代码中,obj是通过Foo类实例化的对象,其实,不仅obj是一个对象,Foo类本身也是一个对象,因为在Python中一切事物都是对象。
如果按照一切事物都是对象的理论:obj对象是通过执行Foo类的构造方法创建,那么Foo类对象应该也是通过执行某个类的构造方法创建。
所以,[b]obj对象是Foo类的一个实例,Foo类对象是type类的一个实例,即:Foo类对象是通过type类的构造方法创建。[/b]
那么,创建类就可以有两种方式:
a).普通方式
b).特殊方式(type类的构造函数)
print'hellowupeiqi'
Foo=type('Foo',(object,),{'func':func})
#type第一个参数:类名
#type第二个参数:当前类的基类
#type第三个参数:类的成员
==》类是由type类实例化产生
相关文章推荐
- Python:字符串的多重替换
- 用PYTHON进行字符串提取的两种方法
- 关于PDNN、Theano、Numpy以及Scipy的安装
- python初学者笔记——命名空间
- 【python】python for data analysis环境安装
- Python陷阱:tuple与Nonetype
- python面向对象(二)——类成员
- python学习笔记4(对象/引用;多范式; 上下文管理器)
- UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx ordinal...
- 【教程】七步精通Python机器学习
- cannot import name 'Flask' 的错误
- python-面向对象(一)——开篇基础
- 【转】zhihu图片下载工具
- 求素数 -- Python实现
- python 新手入门学习(一)
- Python3:正则表达式
- Python-OpenCV(6)
- 一道简单的填空题
- Python的递推式构造列表(List comprehension)
- windows下python安装Numpy、Scipy、matplotlib模块