Я пытался проверить, имеет ли класс определенную функцию в качестве переменной, и тестировал ее, сравнивая ее с родительской функцией, с которой был инициализирован дочерний класс, но обнаружил, что они существуют по разным адресам памяти. Следующий код демонстрирует это поведение:
>>> class common():
def a():
print('hello')
>>> class one(common):
def __init__(self):
self.fn = super().a
>>> var1 = one()
>>> var2 = one()
>>> var1.fn == var2.fn
False
>>> var1.fn is var2.fn
False
>>> var1.fn
<bound method common.a of <__main__.one object at 0x0737CC50>>
>>> var2.fn
<bound method common.a of <__main__.one object at 0x0737CAF0>>
Почему это так? И можно ли как-то обойти это, чтобы я мог проверить, эквивалентны ли они?
Редактировать:
И почему вышеупомянутое может отличаться от приведенного ниже?
1009 *