哪里有好的null object pattern应用实例,pattern应用实例,null object


null object python是一个设计模式,python实现如下,此模式是想减少无必要的is null逻辑判断,不过没能想到具体怎么应用在项目或者自己的代码中,希望有个应用的实例代码,thanks。

#!/usr/bin/env python# -*- coding: utf-8 -*-"""http://code.activestate.com/recipes/68205-null-object-design-pattern/"""class Null:    def __init__(self, *args, **kwargs):        """Ignore parameters."""        return None    def __call__(self, *args, **kwargs):        """Ignore method calls."""        return self    def __getattr__(self, mname):        """Ignore attribute requests."""        return self    def __setattr__(self, name, value):        """Ignore attribute setting."""        return self    def __delattr__(self, name):        """Ignore deleting attributes."""        return self    def __repr__(self):        """Return a string representation."""        return "<Null>"    def __str__(self):        """Convert to a string and return it."""        return "Null"def test():    """Perform some decent tests, or rather: demos."""    # constructing and calling    n = Null()    print(n)    n = Null('value')    print(n)    n = Null('value', param='value')    print(n)    n()    n('value')    n('value', param='value')    print(n)    # attribute handling    n.attr1    print('attr1', n.attr1)    n.attr1.attr2    n.method1()    n.method1().method2()    n.method('value')    n.method(param='value')    n.method('value', param='value')    n.attr1.method1()    n.method1().attr1    n.attr1 = 'value'    n.attr1.attr2 = 'value'    del n.attr1    del n.attr1.attr2.attr3    # representation and conversion to a string    assert repr(n) == '<Null>'    assert str(n) == 'Null'if __name__ == '__main__':    test()### OUTPUT #### Null# Null# Null# Null# attr1 Null

编橙之家文章,

评论关闭