Классы Python содержат пространства имен, а функция dir
перечисляет содержимое пространства имен.Список всех элементов в пространстве имен python
Пространство имен 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__
?
«Классы Python - это просто пространства имен» - нет, они не являются. – user2357112
@ user2357112: Не могли бы вы немного разобраться? Из документации python [здесь] (https://docs.python.org/2/tutorial/classes.html) я прочитал: * Когда определение класса остается нормально (через конец), создается объект класса. Это в основном оболочка содержимого пространства имен, созданного определением класса; * –
Хотя объект класса завершает пространство имен оператора класса, говоря, что класс просто пространство имен похоже на то, что человек - это просто левая нога , Пространство имен является частью класса. – user2357112