Python 3.x Пользовательская цепочка функций с существующим объектом Path () библиотеки PATHLIB - PullRequest
0 голосов
/ 07 февраля 2019

Я определил пользовательскую функцию на основе модуля pathlib в своем скрипте Python (3.x):

def mk_dir(self):
    self.mkdir(parents=True,exist_ok=True)

my_path = Path('./1/2/3/')
mk_dir(my_path)

как сокращение для создания нового каталога с функцией pathlib.Path.mkdir().

Эта функция создаст все недостающие родители данного пути (parents=True) и не вызовет ошибку, если каталог уже существует (exist_ok=True).

Однако я бы хотел изменитьмоя функция, чтобы она работала как связанная функция, т.е. my_path.mk_dir();вместо традиционного метода, передавая переменную, т. е. mk_dir(my_path).

Я попытался сделать это следующим образом:

from pathlib import Path

class Path():
    def mk_dir(self):
        self.mkdir(parents=True,exist_ok=True)
        return self

my_path = Path('./1/2/3/')
my_path.mk_dir()

но лучшее, что я получаю, это ошибка:

AttributeError: 'WindowsPath' object has no attribute 'mk_dir'

Как этого добиться, не изменяя сам исходный файл модуля?

И я не уверен в следующих вопросах:

  1. Нужно ли classопределены?
  2. Нужно ли функции что-либо возвращать?
  3. И лучше ли сначала проверить, существует ли каталог с помощью if not my_path.is_dir(): ... или "нормально" использовать exist_ok=True атрибут?
...