diff --git a/Lib/_collections_abc.py b/Lib/_collections_abc.py
index b172f3f..005d884 100644
--- a/Lib/_collections_abc.py
+++ b/Lib/_collections_abc.py
@@ -908,7 +908,8 @@
         i = start
         while stop is None or i < stop:
             try:
-                if self[i] == value:
+                v = self[i]
+                if v is value or v == value:
                     return i
             except IndexError:
                 break
@@ -917,7 +918,7 @@
 
     def count(self, value):
         'S.count(value) -> integer -- return number of occurrences of value'
-        return sum(1 for v in self if v == value)
+        return sum(1 for v in self if v is value or v == value)
 
 Sequence.register(tuple)
 Sequence.register(str)
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index 87454cc..47f7562 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -1310,20 +1310,29 @@
         class CustomEqualObject:
             def __eq__(self, other):
                 return False
-        class CustomSequence(list):
-            def __contains__(self, value):
-                return Sequence.__contains__(self, value)
+        class CustomSequence(Sequence):
+            def __init__(self, seq):
+                self._seq = seq
+            def __getitem__(self, index):
+                return self._seq[index]
+            def __len__(self):
+                return len(self._seq)
 
         nan = float('nan')
         obj = CustomEqualObject()
+        seq = CustomSequence([nan, obj, nan])
         containers = [
-            CustomSequence([nan, obj]),
+            seq,
             ItemsView({1: nan, 2: obj}),
             ValuesView({1: nan, 2: obj})
         ]
         for container in containers:
             for elem in container:
                 self.assertIn(elem, container)
+        self.assertEqual(seq.index(nan), 0)
+        self.assertEqual(seq.index(obj), 1)
+        self.assertEqual(seq.count(nan), 2)
+        self.assertEqual(seq.count(obj), 1)
 
     def assertSameSet(self, s1, s2):
         # coerce both to a real set then check equality
