diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 538d4ee..bf5bb4d 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -2481,6 +2481,14 @@
             assert a.read_text() == "content of a"
             assert a.read_bytes() == b"content of a"
 
+    def test_joinpath(self):
+        for zipfile_abcde in self.zipfile_abcde():
+            root = zipfile.Path(zipfile_abcde)
+            a = root.joinpath("a")
+            assert a.is_file()
+            e = root.joinpath("b").joinpath("d").joinpath("e.txt")
+            assert e.read_text() == "content of e"
+
     def test_traverse_truediv(self):
         for zipfile_abcde in self.zipfile_abcde():
             root = zipfile.Path(zipfile_abcde)
@@ -2502,5 +2510,11 @@
             root = zipfile.Path(zipfile_abcde)
             root / pathlib.Path("a")
 
+    def test_parent(self):
+        for zipfile_abcde in self.zipfile_abcde():
+            root = zipfile.Path(zipfile_abcde)
+            assert (root / 'a').parent.at == ''
+            assert (root / 'a' / 'b').parent.at == 'a/'
+
 if __name__ == "__main__":
     unittest.main()
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 62475c7..8f8cb86 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -2218,12 +2218,14 @@
     def __repr__(self):
         return self.__repr.format(self=self)
 
-    def __truediv__(self, add):
+    def joinpath(self, add):
         next = posixpath.join(self.at, add)
         next_dir = posixpath.join(self.at, add, "")
         names = self._names()
         return self._next(next_dir if next not in names and next_dir in names else next)
 
+    __truediv__ = joinpath
+
     @staticmethod
     def _add_implied_dirs(names):
         return names + [
@@ -2232,6 +2234,13 @@
             if name and name + "/" not in names
         ]
 
+    @property
+    def parent(self):
+        parent_at = posixpath.dirname(self.at)
+        if parent_at:
+            parent_at += '/'
+        return self._next(parent_at)
+
     def _names(self):
         return self._add_implied_dirs(self.root.namelist())
 
