существуют специальные методы, например (в Django):Как я могу получить список всех доступных специальных методов?
def __wrapper__
def __deepcopy__
def __mod__
def __cmp__
существуют специальные методы, например (в Django):Как я могу получить список всех доступных специальных методов?
def __wrapper__
def __deepcopy__
def __mod__
def __cmp__
Список специальных имен методов является here, но это не является исчерпывающим магических имен - например, методы __copy__
и __deepcopy__
упоминаются here вместо этого, переменная __all__
является here, класс атрибутов, таких как __name__
, __bases__
и т.д. here и т. д. Я не знаю ни одного авторитетного списка всех таких имен, определенных в любом выпуске языка.
Однако, если вы хотите проверить какое-либо конкретное специальное имя, скажем __foo__
, просто найдите его в поле «Быстрый поиск» документов Python (любой из приведенных выше URL-адресов сделает!) - таким образом вы найдете его, если он официально является частью языка, и если вы не найдете , найдите его, вы узнаете, что это ошибочное использование со стороны какого-либо пакета или фреймворка, нарушающего условные обозначения языка.
Вы можете найти большинство из них здесь: http://docs.python.org/genindex-all.html#_
идентификаторы с 2 + 2 ведущий задний подчёркивания конечно, отведенные для special method names. Хотя сейчас можно определить такие идентификаторы, в будущем этого может не произойти. __deepcopy__, __mod__ и __cmp__ - это все специальные методы, встроенные в python, которые классы пользователей могут переопределять для реализации функциональных возможностей класса.
Вы всегда сможете определить идентификаторы '__something__', если язык не переопределен. Вы должны знать, что вы можете переписать идентификацию переменной существующего имени специального метода. – voyager
хорошо, что в документе говорится, что «приложения не должны рассчитывать определять имена с использованием этого соглашения», что подразумевает, что поведение также может быть неопределенным (т. Е. Оно может работать, оно может терпеть неудачу, может взорваться в будущей версии и т. Д.), .... – jspcal
Для печати зарезервированных слов языка Python просто использовать
>>> import keyword
>>> print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global',
'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass',
'raise', 'return', 'try', 'while', 'with', 'yield']
Чтобы прочитать объяснение специальных методов объекта в Python, read the manual или Dive into Python.
Другой фрагмент кода можно использовать,
>>> [method for method in dir(str) if method[:2]=='__']
['__add__', '__class__', '__contains__', '__delattr__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
'__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__',
'__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__']
, чтобы увидеть все встроенные в специальных методов str
класса.
Обратите внимание, что 'dir()' не показывает атрибуты родительских классов. Например, 'str .__ mro__' не включен в ваш список. –
Не могли бы вы перефразировать свой вопрос? Я не совсем уверен, что вы спрашиваете. –
Что вам нужно? В чем разница между зарезервированными словами Django и Python? Вам просто нужен список зарезервированных слов Python? – voyager
Прошу прощения, это мой самый высокий уровень написания английского, я думаю, вы должны использовать свое воображение. – zjm1126