@@ -335,7 +335,7 @@ def __new__(cls, *args):
335335 def __reduce__ (self ):
336336 # Using the parts tuple helps share interned path parts
337337 # when pickling related paths.
338- return (self . __class__ , tuple (self ._parts ))
338+ return (type ( self ) , tuple (self ._parts ))
339339
340340 @classmethod
341341 def _parse_args (cls , args ):
@@ -398,10 +398,8 @@ def _parse_parts(cls, parts):
398398
399399 @classmethod
400400 def _from_parts (cls , args ):
401- # We need to call _parse_args on the instance, so as to get the
402- # right flavour.
401+ drv , root , parts = cls ._parse_args (args )
403402 self = object .__new__ (cls )
404- drv , root , parts = self ._parse_args (args )
405403 self ._drv = drv
406404 self ._root = root
407405 self ._parts = parts
@@ -428,7 +426,8 @@ def _make_child(self, args):
428426 self ._drv , self ._root , self ._parts , drv , root , parts )
429427 return self ._from_parsed_parts (drv , root , parts )
430428
431- def _join_parsed_parts (self , drv , root , parts , drv2 , root2 , parts2 ):
429+ @classmethod
430+ def _join_parsed_parts (cls , drv , root , parts , drv2 , root2 , parts2 ):
432431 """
433432 Join the two paths represented by the respective
434433 (drive, root, parts) tuples. Return a new (drive, root, parts) tuple.
@@ -437,7 +436,7 @@ def _join_parsed_parts(self, drv, root, parts, drv2, root2, parts2):
437436 if not drv2 and drv :
438437 return drv , root2 , [drv + root2 ] + parts2 [1 :]
439438 elif drv2 :
440- if drv2 == drv or self ._casefold (drv2 ) == self ._casefold (drv ):
439+ if drv2 == drv or cls ._casefold (drv2 ) == cls ._casefold (drv ):
441440 # Same drive => second path is relative to the first
442441 return drv , root , parts + parts2 [1 :]
443442 else :
@@ -481,7 +480,7 @@ def __bytes__(self):
481480 return os .fsencode (self )
482481
483482 def __repr__ (self ):
484- return "{}({!r})" .format (self . __class__ .__name__ , self .as_posix ())
483+ return "{}({!r})" .format (type ( self ) .__name__ , self .as_posix ())
485484
486485 def as_uri (self ):
487486 """Return the path as a 'file' URI."""
@@ -1114,7 +1113,7 @@ def write_text(self, data, encoding=None, errors=None, newline=None):
11141113 """
11151114 if not isinstance (data , str ):
11161115 raise TypeError ('data must be str, not %s' %
1117- data . __class__ .__name__ )
1116+ type ( data ) .__name__ )
11181117 encoding = io .text_encoding (encoding )
11191118 with self .open (mode = 'w' , encoding = encoding , errors = errors , newline = newline ) as f :
11201119 return f .write (data )
@@ -1197,7 +1196,7 @@ def rename(self, target):
11971196 Returns the new Path instance pointing to the target path.
11981197 """
11991198 self ._accessor .rename (self , target )
1200- return self .__class__ ( target )
1199+ return self ._from_parts (( target ,) )
12011200
12021201 def replace (self , target ):
12031202 """
@@ -1210,7 +1209,7 @@ def replace(self, target):
12101209 Returns the new Path instance pointing to the target path.
12111210 """
12121211 self ._accessor .replace (self , target )
1213- return self .__class__ ( target )
1212+ return self ._from_parts (( target ,) )
12141213
12151214 def symlink_to (self , target , target_is_directory = False ):
12161215 """
0 commit comments