Pickle только сохраняет атрибуты экземпляра класса, но Synonyms
- это список, определенный на уровне класса. Вы должны создать список в __init__
-методе:
import pickle
class Entry:
def __init__(self, text):
self.Text = text
class Term:
def __init__(self):
self.Main = None
self.Synonyms = []
def Save():
term = Term()
term.Main = Entry("Dog")
term.Synonyms.append(Entry("Canine"))
term.Synonyms.append(Entry("Pursue"))
term.Synonyms.append(Entry("Follow"))
term.Synonyms.append(Entry("Plague"))
terms = []
terms.append(term)
with open('output.pickle', 'wb') as p:
pickle.dump(terms, p)
def Load():
with open('output.pickle', 'rb') as p:
loadedTerms = pickle.load(p)
return loadedTerms
После того, как вы прочитали через Интернет, ответ вы не можете! Вы можете удалить все или ничего. Обходной путь может быть примерно следующим:
$(document).on('click', '.btn', function (ev) {
alert('pressed');
$(this).removeClass("btn");
});
Demo @ Fiddle
Пример HTML:
<button class="btn">One</button>
<button class="btn">Two</button>
<button class="btn">Three</button>
В дополнение к тому, что сказал lshettyl (текущий верхний пост) - дополнительная работа заключается в привязке нового прослушивателя событий непосредственно к элементу, который вы пытаетесь удалить слушателя, и вызвать stopPropagation () в нем.
Что это будет делать, так это предотвращать перемещение события по DOM и попадание на обработчик событий, который первоначально привязан к документу. Также это позволит вам сохранить некоторые функции при нажатии кнопки, например, предупреждение пользователю, что эта кнопка уже нажата - или что-то в этом роде.
$(document).on('click', 'button', function(ev) {
// Your logic to occur on button click
// Prevent further click on just this button
$(this).click(function(event) {
event.stopPropagation();
}):
});
Вопрос: Вам нужно использовать делегированные события? LIke LShetty сказал, что невозможно удалить делегированное событие для одного элемента. Вы либо удаляете всю делегацию событий, либо оставляете ее. Вместо этого вы можете попробовать использовать другой селектор, как в этом примере
$('button').on('click', function(ev) {
$('#output').append('Clicked! ');
$(this).off('click');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<button>One</button>
<button>Two</button>
<button>Three</button>
<div id="output"></div>