Рассмотрим следующее:
class objectTest():
    def __init__(self,a):
        self.value = a
    def get_value(self):
        return self.value
class execute():
    def __init__(self):
        a = objectTest(1)
        b = objectTest(1)
        print(a == b)
        print(a.get_value() == b.get_value)
        print(a.get_value() == b.get_value())
        print(a.get_value == b.get_value)
if __name__ == '__main__':
    execute = execute();
Этот код возвращает
>>>
False
False
True 
False
Учитывая, что get_value является функцией, я ожидал бы, что выполнение остановится и вернет ошибку, но это не так. Может кто-нибудь объяснить, почему интерпретатор python допускает такой синтаксис вместо повышения ошибки атрибута, который в моем случае спас бы мне драгоценное время.