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__
也在那里?
答案 0 :(得分:3)
IPython通过查看__subclasses__
,通过完全普通的方式找到type(object)
。另一方面,由于object
是一种类型,dir
for types特别不会查看type(object)
。编写dir
的人决定在列表中查看元类属性会让人感到困惑。