python 魔法方法

1, __doc__ 描述类的属性

class New(object):
    """describe  for New"""
    def function(self):
        pass
print(New.__doc__)

2, __class__  查看类是由谁创建的!

class New(object):
    """describe  for New"""
    def function(self):
        pass
print(New.__doc__)

3,__module__ 查看当前操作的对象在哪个模块

class New(object):
    """describe  for New"""
    def function(self):
        pass
print(New.__module__)

4,__dict__ 查看类或者对象的所有属性,dir() 就是调用这个方法

class New(object):
    """describe  for New"""
    def function(self):
        pass
print(New.__dict__)

5,__init__ 给初始化属性赋值的方法,并不是创建对象

class ClassName(object):
    """docstring for ClassName"""
    def __init__(self, arg):
        self.arg = arg

6,__new__  这个是创建对象的方法

class New(object):
    """describe  for New"""
    def __new__(cls):  
        return self  # 返回的是本身 先创建类,才创建对象

7,__call__  方法的执行是由对象后加括号触发的

class ClassName(object):
    def __call__(self):
        print('hello world')
print(ClassName())  #类名加对象执行 __call__ 方法

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)
obj = Foo()

result = obj['k1']      # 自动触发执行 __getitem__
obj['k2'] = 'laowang'   # 自动触发执行 __setitem__
del obj['k1'] 

 

posted @ 2018-05-09 09:13  十七楼的羊  阅读(113)  评论(0编辑  收藏  举报