__dir __()在类和元类中

时间:2017-10-20 09:50:02

标签: python metaclass

我第一次使用了元类。 目的是控制类或实例的help()输出。 在元类的__dir __()函数中指定属性允许我控制帮助内容。 但是,我观察到对于intellisense / code_completion,在Jupyter中,重要的是类本身的__dir __()函数。

这足以让我理解这个事实。 但是,我想知道原因。

感谢您的澄清。

1 个答案:

答案 0 :(得分:0)

正如我在other answer about this topic中所述,Python没有定义如何挑选help的内容。由于语言的性质,使用metaclass __dir__是可行的,但第三方模块肯定不会期望它返回自定义结果,不同于班级' s dir,因为它不常见。

所以,给出的是你试图自定义不可自定义的功能 - 你要么必须创建一个代表所有不需要的用户方法的新类,因此可以隐藏帮助和dir你不想要的东西&#39 ; t想要显示,或创建一个完整的应用程序,只需要做你需要的,而不是依靠Jupiter笔记本来显示你的具体说明,只显示那些指令。

总的来说,如果你使用元类用于其他动机,那么,如果你正在尝试使用元类来试图覆盖help输出,我说这已经是错误的使用了

另一种选择是坚持可手动调用" help2"类中的方法,只打印您想要的输出。然后你在主类文档字符串上记录"请使用classname.help2()来学习用法。",否则只留下__dir__