码迷,mamicode.com
首页 > 编程语言 > 详细

python 类的特殊成员方法

时间:2017-03-26 23:34:23      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:name   默认   返回   实例   成员方法   nbsp   ret   sel   执行   

__doc__ # 输出类的描述信息
__module__ # 表示当前操作的对象在那个模块
__class__ # 表示当前操作的对象的类是什么
__init__ # 构造方法,通过类创建对象是,自动触发执行。
__del__ # 构造方法,当对象在内存中释放是,自动触发执行。
__call__ # 对象后面加括号,触发执行
注:构造方法的执行是由创建对象触发的,即:对象 = 类名();而对于__call__方法的执行是由对象后加括号触发的,即:对象()或者类()()
__dict__ # 查看类或对象中的所有成员
__str__ # 如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。
__getitem__ # 用于索引操作,如字典。表示获取数据
__setitem__ # 用于索引操作,如字典。表示设置数据
__delitem__ # 用于索引操作,如字典。表示删除数据

**__new__**

创建类的两种方法:
1.普通方法
class Foo(object):
def func(self):
print(‘hello world!‘)
2.特殊方法
def func(self):
print(‘hello world!‘)
Foo = type(‘Foo‘,(object),{‘func‘:func})
# type第一个参数:类名
# type第二个参数:当前类的基类
# type第三个参数:类的成员

**__new__**

new负责函数实例化时的内存空间开辟。早于__ini__的执行。
**metaclass**

class Foo(object,metaclass=MyType)
**__new__,__init__,__call__的使用说明**

    class Mytype(type):
        def __call__(self, *args, **kwargs):
            print(Mytype __call__)
            obj = self.__new__(self)
            self.__init__(obj, *args, **kwargs)
            return obj

        def __new__(cls, *args, **kwargs):
            print(Mytype __new__)
            obj = type.__new__(cls, *args, **kwargs)
            return obj
        def __init__(self,*args,**kwargs):
            print(Mytype __init__)

    class Foo(object,metaclass=Mytype):
        def __init__(self,name):
            print(Foo __init__)
            self.name = name

    f = Foo(helei)
    print(f.name)

 

说明:
首先你需要知道一下几点:
- python中一切接对象。(平时所说的对象和实例都是对象)
- __init__的作用是初始化函数属性作用是
- __new__的作用是生成对象的内存空间并返回
- __call__的作用是对象(或者可以说是实例)后面加括号,触发执行

python 类的特殊成员方法

标签:name   默认   返回   实例   成员方法   nbsp   ret   sel   执行   

原文地址:http://www.cnblogs.com/40kuai/p/6624673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!