簡體   English   中英

自定義dict類的ipython選項卡完成

[英]ipython tab completion for custom dict class

我一直在我的代碼中使用以下內容:

class Structure(dict,object):
""" A 'fancy' dictionary that provides 'MatLab' structure-like
referencing. 

"""
def __getattr__(self, attr):
    # Fake a __getstate__ method that returns None
    if attr == "__getstate__":
        return lambda: None
    return self[attr]

def __setattr__(self, attr, value):
    self[attr] = value

def set_with_dict(self, D):
    """ set attributes with a dict """
    for k in D.keys():
        self.__setattr__(k, D[k])

總而言之,它適用於我的目的,但我注意到,只有方法選項卡完成才能用於繼承自Structure的另一個自定義類中的方法,而不是屬性。 我也做了這個測試,我發現結果有點奇怪:

In [2]: d = Structure()
In [3]: d.this = 'that'
In [4]: d.this
Out[4]: 'that'
In [5]: d.th<tab>
NOTHING HAPPENS

In [6]: class T():
   ...:     pass
   ...: 

In [7]: t = T()
In [8]: t.this = 'cheese'
In [9]: t.th<tab>
COMPLETES TO t.this
Out[9]: 'cheese'

我需要將哪些內容添加到我的類中以使標簽完成為屬性工作?

添加此方法:

def __dir__(self):
    return self.keys()

見這里: http//ipython.org/ipython-doc/dev/config/integrating.html

在這里: http//docs.python.org/2/library/functions.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM