diff --git a/Lib/inspect.py b/Lib/inspect.py
index bf4f87d..b65bec7 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -527,17 +527,18 @@
             cls = self
         else:
             cls = self.__class__
+    # Should be tested before isdatadescriptor().
+    elif isinstance(obj, property):
+        func = obj.fget
+        name = func.__name__
+        cls = _findclass(func)
+        if cls is None or getattr(cls, name) is not obj:
+            return None
     elif ismethoddescriptor(obj) or isdatadescriptor(obj):
         name = obj.__name__
         cls = obj.__objclass__
         if getattr(cls, name) is not obj:
             return None
-    elif isinstance(obj, property):
-        func = f.fget
-        name = func.__name__
-        cls = _findclass(func)
-        if cls is None or getattr(cls, name) is not obj:
-            return None
     else:
         return None
 
diff --git a/Lib/test/inspect_fodder.py b/Lib/test/inspect_fodder.py
index 068d825..711bada 100644
--- a/Lib/test/inspect_fodder.py
+++ b/Lib/test/inspect_fodder.py
@@ -45,14 +45,17 @@
             self.ex = sys.exc_info()
             self.tr = inspect.trace()
 
+    @property
     def contradiction(self):
         'The automatic gainsaying.'
         pass
 
-# line 48
+# line 53
 class MalodorousPervert(StupidGit):
     def abuse(self, a, b, c):
         pass
+
+    @property
     def contradiction(self):
         pass
 
@@ -64,6 +67,8 @@
 class FesteringGob(MalodorousPervert, ParrotDroppings):
     def abuse(self, a, b, c):
         pass
+
+    @property
     def contradiction(self):
         pass
 
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 955b2ad..69ddb51 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -393,8 +393,8 @@
 
     def test_getsource(self):
         self.assertSourceEqual(git.abuse, 29, 39)
-        self.assertSourceEqual(mod.StupidGit, 21, 50)
-        self.assertSourceEqual(mod.lobbest, 70, 71)
+        self.assertSourceEqual(mod.StupidGit, 21, 51)
+        self.assertSourceEqual(mod.lobbest, 75, 76)
 
     def test_getsourcefile(self):
         self.assertEqual(normcase(inspect.getsourcefile(mod.spam)), modfile)
diff --git a/Misc/ACKS b/Misc/ACKS
index f8fcccf..c7be840 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1480,6 +1480,7 @@
 Ville Vainio
 Andi Vajda
 Case Van Horsen
+John Mark Vandenberg
 Kyle VanderBeek
 Andrew Vant
 Atul Varma
diff --git a/Misc/NEWS b/Misc/NEWS
index 638964e..be859ed 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -45,6 +45,9 @@
 Library
 -------
 
+- Issue #25503: Fixed inspect.getdoc() for inherited docstrings of properties.
+  Original patch by John Mark Vandenberg.
+
 - Issue #21827: Fixed textwrap.dedent() for the case when largest common
   whitespace is a substring of smallest leading whitespace.
   Based on patch by Robert Li.
