Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
К моему знанию не возможно присвоить docstrings элементам данных модуля.
PEP 224 предлагает эту функцию, но PEP был отклонен.
я предлагаю, чтобы Вы зарегистрировали элементы данных модуля в docstring модуля:
# module.py:
"""About the module.
module.data: contains the word "spam"
"""
data = "spam"
возможно сделать документацию данных модуля с использованием синтаксис epydoc . Epydoc является одним из наиболее часто используемых инструментов документации для Python.
синтаксис для документирования #:
выше переменной строки инициализации, как это:
# module.py:
#: Very important data.
#: Use with caution.
#: @type: C{str}
data = "important data"
Теперь то, когда Вы генерируете свою документацию, data
, будет описано как переменная модуля с данным описанием и типом str
. Можно опустить @type
строка.
Как codeape объясняет, не возможно зарегистрировать общие элементы данных.
Однако это возможно к элементам данных документа property
:
class Foo:
def get_foo(self): ...
def set_foo(self, val): ...
def del_foo(self): ...
foo = property(get_foo, set_foo, del_foo, '''Doc string here''')
Это даст docstring эти foo
атрибут, очевидно.