zoukankan      html  css  js  c++  java
  • python 类的特殊成员方法

    __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__的作用是对象(或者可以说是实例)后面加括号,触发执行

    最新内容可以看我的blog: 40kuai
  • 相关阅读:
    Warning: Cannot modify header information
    curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in
    PHP Warning: strtotime(): It is not safe to rely on the system's timezone settings.
    出现Deprecated: Function ereg_replace() is deprecated in 的原因及解决方法
    APMServ5.2.6 升级PHP版本 到高版本 5.3,5.4
    Apache无法启动解决 the requested operation has failed
    用json获取拉钩网的信息
    json
    如何用组件组装一个简单的机器人
    vue-组件
  • 原文地址:https://www.cnblogs.com/40kuai/p/6624673.html
Copyright © 2011-2022 走看看