1
让我们假设你有下面的类的实例:在结束阿尔特列表
>>> dir(foo)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_data']
注_data
:
class Foo(object):
def __init__(self, data):
self._data = data
foo = Foo({'bar': 'baz'})
当你dir(foo)
你物业列表
我想有一个方法来定制什么dir
输出对于我的班级的例子。在这种特殊情况下,我想添加的键值对在_data
字典中被列为在前面的输出额外的项目,如:在财产结束
>>> dir(foo)
['__class__', '__delattr__', ..., '_data', 'bar']
注_data
和bar
名单
我以为会有一个特殊功能类似的方式来定制这个就像你可以自定义一个实例与__str__
,__repr__
等,但还没有找到这样的东西呢。
UPDATE:我正在寻找的东西,只有改变属性来显示,而不会像改变实例__dict__
:
class Foo(object):
def __init__(self, data):
self._data = data
self.__dict__.update(data) # I would prefer not to do this
有没有办法做到这一点?在此先感谢您的帮助!
提供的__ dir __方法不够吗? – AMacK
它是,但直到现在我还不知道它。谢谢! – Gerard