Скажем, у меня есть два объекта одного класса: objA и objB. Их взаимосвязь такова:
(objA == objB) #true
(objA is objB) #false
Если я использую оба объекта в качестве ключей в питоне Python, они будут считаться одним и тем же ключом и перезаписывать друг друга. Есть ли способ переопределить компаратор dict, чтобы использовать сравнение is
вместо ==
, чтобы эти два объекта рассматривались как разные ключи в dict?
Может быть, я могу переопределить метод equals в классе или что-то еще? Чтобы быть более конкретным, я говорю о двух тегах из библиотеки BeautifulSoup4.
Вот более конкретный пример того, о чем я говорю:
from bs4 import BeautifulSoup
HTML_string = "<html><h1>some_header</h1><h1>some_header</h1></html>"
HTML_soup = BeautifulSoup(HTML_string, 'lxml')
first_h1 = HTML_soup.find_all('h1')[0] #first_h1 = <h1>some_header</h1>
second_h1 = HTML_soup.find_all('h1')[1] #second_h1 = <h1>some_header</h1>
print(first_h1 == second_h1) # this prints True
print(first_h1 is second_h1) # this prints False
my_dict = {}
my_dict[first_h1] = 1
my_dict[second_h1] = 1
print(len(my_dict)) # my dict has only 1 entry!
# I want to have 2 entries in my_dict: one for key 'first_h1', one for key 'second_h1'.