列出python命名空间中的所有元素

时间:2016-01-18 17:59:26

标签: python function class namespaces

Python类包含名称空间,函数dir列出名称空间的内容。

class BooksViewSet(ModelViewset): serializer_class = BookSerializer permission_classes=[permissions.IsAuthenticated, ] def get_queryset(self): return Books.objects.filter(owner=self.request.user) def perform_create(self, serializer): serializer.data.owner = self.request.user super(BooksViewSet, self).perform_create(serializer) 命名空间包含多个函数,例如函数object,它在调用时返回一个列表,其中包含作为__subclasses__的子类的所有已知类。

object的输出是:

dir(object)

['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] 功能未列出,但在那里,请尝试:__subclasses__

我了解课程可以更改object.__subclasses__()词典以自定义__dir__显示的内容,但dir不是object,实际上object.__dir__提出异常。

但是,当我使用IPython自动完成时,__subclasses__函数就在那里。如何获得IPython使用的相同元素列表,以便我知道__subclasses__也在那里?

1 个答案:

答案 0 :(得分:3)

IPython通过查看__subclasses__,通过完全普通的方式找到type(object)。另一方面,由于object是一种类型,dir for types特别不会查看type(object)。编写dir的人决定在列表中查看元类属性会让人感到困惑。