在自身内部使用类实例

时间:2019-01-03 21:02:27

标签: python

在内部使用类是否被认为是不好的做法? 例如:

class Foo:
    def __init__(self, b=None):
        """
        b  (Foo|None): instance of Foo.
        """
        self.a = 'hello'
        if isinstance(b, Foo):
            print(b.a)

2 个答案:

答案 0 :(得分:3)

不。竭尽全力在自己内部使用类是没有意义的,但是如果它解决了您的问题,那就继续吧。例如,python的标准库OrderedDict有一个实例,在它自己的定义中使用自己:

def __eq__(self, other):
    '''od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive
    while comparison to a regular mapping is order-insensitive.

    '''
    if isinstance(other, OrderedDict):
        return len(self)==len(other) and \
               all(_imap(_eq, self.iteritems(), other.iteritems()))
    return dict.__eq__(self, other)

答案 1 :(得分:1)

不,很好。实际上,这是实现树或链接列表节点之类的非常常见的模式。