魔法方法小试牛刀

Python fireling 5509℃

一个简单的例子


class A:
    '''
    TODO
    '''
    pass
a = A()
print a.xxx
a.xxx1(1, 2, key='ssss')
a.xxx2(1, 2)
a.xxx3(1, 2, a.xxx)
a.xxx4(1, 2, a.xxx1(1, 2, key='ssss'))

运行上述代码,程序会报错。原因是因为在A类的对象a中,不存在诸多行为和属性。如果要使得运行不报错,也就是说,随便给定a行为和属性,它都能统统接受,该怎么做呢?

这就利用到了函数的魔法方法

魔法方法(Magic Methods)


class A:
    def __getattr__(self, attr):
        def _(*args, **kw):
            print args, kw
        return _
    pass
a = A()
print a.xxx
a.xxx1(1, 2, key='ssss')
a.xxx2(1, 2)
a.xxx3(1, 2, a.xxx)
a.xxx4(1, 2, a.xxx1(1, 2, key='ssss'))

运行结果:


<function _ at 0x0000000002247128>
(1, 2) {'key': 'ssss'}
(1, 2) {}
(1, 2, <function _ at 0x0000000002247208>) {}
(1, 2) {'key': 'ssss'}
(1, 2, None) {}

 

转载请注明:宁哥的小站 » 魔法方法小试牛刀

喜欢 (3)