Лучший способ абстрагировать сезонные/шоу/эпизоды данные

Другое событие 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));
}

15
задан Ninjakannon 29 March 2017 в 20:45
поделиться

5 ответов

Хорошо, то, в чем Вы нуждаетесь, classobj от нового модуля. Это позволило бы Вам создавать классы исключений динамично (classobj, берет строку в качестве аргумента в пользу имени класса).

import new
myexc=new.classobj("ExcName",(Exception,),{})
i=myexc("This is the exc msg!")
raise i

это дает Вам:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__main__.ExcName: This is the exc msg!

помнят, что можно всегда передавать имя класса:

self.__class__.__name__

Так, после некоторого строкового искажения и конкатенации, необходимо смочь получить соответствующее имя класса исключений и создать объект класса с помощью того имени и затем повысить то исключение.

P.S. - можно также повысить строки, но это удерживается от использования.

raise(self.__class__.__name__+"Exception")
5
ответ дан 1 December 2019 в 05:07
поделиться

Почему бы не использовать SQLite? Существует хорошая поддержка в Python, и можно записать SQL-запросы для вывода данных. Вот документы Python для <час> sqlite3

, Если Вы не хотите использовать SQLite, Вы могли бы сделать массив dicts.

episodes = []
episodes.append({'season':1, 'episode': 2, 'name':'Something'})
episodes.append({'season':1, 'episode': 2, 'name':'Something', 'actors':['Billy Bob', 'Sean Penn']})

Тот способ, которым Вы добавляете метаданные к любой записи и ищете его очень легко

season_1 = [e for e in episodes if e['season'] == 1]
billy_bob = [e for e in episodes if 'actors' in e and 'Billy Bob' in e['actors']]

for episode in billy_bob:
    print "Billy bob was in Season %s Episode %s" % (episode['season'], episode['episode'])
3
ответ дан 1 December 2019 в 05:07
поделиться

Я сделал что-то подобное в прошлом и использовал XML-документ в оперативной памяти в качестве быстрой и грязной hierachical базы данных для устройства хранения данных. Можно сохранить каждое шоу/сезон/эпизод как элемент (вложенный соответственно) и атрибуты этих вещей как атрибуты XML на элементах. Затем можно использовать XQuery для возвращения информации.

ПРИМЕЧАНИЕ: я не парень Python, таким образом, я не знаю то, на что похожа Ваша поддержка XML.

ПРИМЕЧАНИЕ 2: Вы захотите представить это, потому что это будет больше и медленнее, чем решение, которое Вы уже получили. Достаточно вероятно, если Вы делаете, некоторый большой объем, обрабатывающий затем XML, вероятно, не собирается быть Вашим другом.

0
ответ дан 1 December 2019 в 05:07
поделиться

Я не получаю эту часть здесь:

Это работало хорошо, но не было никакого простого способа проверить, как ли x [3] [24], предполагалось, существовал или не (таким образом, я не мог повысить season_not_found исключение)

существует способ сделать это - названный в :

>>>x={}
>>>x[1]={}
>>>x[1][2]={}
>>>x
{1: {2: {}}}
>>> 2 in x[1]
True
>>> 3 in x[1]
False

, что, кажется, проблема с этим?

0
ответ дан 1 December 2019 в 05:07
поделиться

Bartosz/To разъясняют, что "Это работало хорошо, но не было никакого простого способа проверить, как ли x [3] [24], предполагалось, существовал, или не"

x['some show'][3][24] возвратил бы сезон 3, эпизод 24 "некоторого шоу". Если не было никакого сезона 3, я хочу, чтобы pseudo-dict повысил tvdb_seasonnotfound, если "некоторое шоу" не существует, то повысьте tvdb_shownotfound

существующая система серии классов, каждого с __getitem__ - Выставочные проверки if self.seasons.has_key(requested_season_number), Сезонные проверки класса if self.episodes.has_key(requested_episode_number) и так далее.

Это работает, но это там, кажется, много повторного кода (каждый класс является в основном тем же, но повышает различную ошибку)

0
ответ дан 1 December 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: