zoukankan      html  css  js  c++  java
  • Python-面向对象之类的特殊成员方法

    类的特殊成员方法

    1、__doc__

    说明:表示类的描述信息

    class Foo:
        """ 描述类信息,这是用于看片的神奇 """
     
        def func(self):
            pass
     
    print Foo.__doc__
    #输出:类的描述信息
    

     2、__module__ 和 __class__

    说明:__module__ 表示当前操作的对象在哪个模块

       __class__  表示当前操作的类是什么

    # _*_ coding:utf-8 _*_
    import socket
    import threading
    
    # 创建socket实例
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定socket的监听地址
    server.bind(('localhost', 10086))
    # 设置socket最大等待连接数
    server.listen(5)
    
    print(server.__module__)
    # socket
    
    print(server.__class__)
    # <class 'socket.socket'>
    

    3、__init__

    说明:构造方法,通过类创建对象时,自动触发执行。

    4、__del__

    说明:析构方法,当对象在内存中被释放是,自动触发执行。此方法一般无需定义。

    5、__call__

    说明:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发,即:对象() 或者 类()()。

    class Foo(object):
        def __init__(self):
            self.name = "shuaigaogao"
     
        def __call__(self, *args, **kwargs):  #重写call方法
            print("running call",args,kwargs)
     
    f = Foo()   #执行__init__
    f(1,2,3,name=333)  # 执行call方法,也可以写成 Foo()(1,2,3,name=333)
     
    #输出
    running call (1, 2, 3) {'name': 333}
    

    6、__dict__

    说明:查看类或对象中的所有成员

    7、__str__

    说明:如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。

    class Province(object):
     
        country = 'China'
     
        def __init__(self, name):
            self.name = name
     
        def __str__(self):
            return "<obj:{0}>".format(self.name)
     
    p = Province("jiangsu")
    print(p)  #打印这个对象
     
    #输出
    <obj:jiangsu>  #给对象重新起了一个名字
    

    8、__getitem__、__setitem__、__delitem__

    说明:用于索引操作,如字典。以上分别表示获取、设置、删除数据。

    class Foo(object):
     
        def __getitem__(self, key):
            print('__getitem__:',key)
     
        def __setitem__(self, key, value):
            print('__setitem__:',key,value)
     
        def __delitem__(self, key):
            print('__delitem__',key)
     
     
    f = Foo()
    f["name"] = "Kirusx"  #自动触发__setitem__方法
    f["name"]      #自动触发__getitem__方法
    del f["name"]  #自动触发__delitem__方法
     
    #输出
    __setitem__: name Kirusx
    __getitem__: name
    __delitem__ name
    

    注:这边的__delitem__没有做真正的删除,只是触发这个方法,想要真正删除,只需要在__delitem__函数中添加删除功能即可。

  • 相关阅读:
    centos mongo数据库搭建
    闪屏页白屏或者显示旧图
    在Sqlserver下巧用行列转换日期的数据统计
    读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1
    MVC的自定义动作过滤器(一)
    【算法】快排
    【编程范式】C语言1
    排序
    日志记录类
    邮箱发送类
  • 原文地址:https://www.cnblogs.com/kirusx/p/6974194.html
Copyright © 2011-2022 走看看