Предположим, я определил подкласс, унаследованный от Path, и хочу использовать методы Path. Например, Path.glob() здесь:
Код: Выделить всё
from pathlib import Path
class PhotoDir(Path):
pass
# some custom methods
if __name__ == "__main__":
path: str = r"Y:\Picture\2023\2023-11-03"
photoDir: PhotoDir = PhotoDir(path)
print(list(photoDir.glob("*")))
Код: Выделить всё
[
PhotoDir('001.jpg'),
PhotoDir('002.jpg')
]
Я ожидаю следующего результата:
Код: Выделить всё
[
Path('001.jpg'),
Path('002.jpg')
]
Код: Выделить всё
[
Photo('001.jpg'),
Photo('002.jpg')
]
Я пробовал переопределить методы с помощью super().glob(), все равно.(Оно разницы нет, если я прав):
Код: Выделить всё
class PhotoDir(Path):
def glob(
self, pattern: str, *, case_sensitive: bool | None = None
) -> Generator[Self, None, None]:
return super().glob(pattern, case_sensitive=case_sensitive)
Код: Выделить всё
class PhotoDir(Path):
def glob(
self, pattern: str, *, case_sensitive: bool | None = None
) -> Generator[Self, None, None]:
return Path(self).glob(pattern, case_sensitive=case_sensitive)
Код: Выделить всё
class PhotoDir:
def __init__(self, *args: str | PathLike[str]) -> None:
self.path: Path = Path(*args)
Источник: https://stackoverflow.com/questions/781 ... -instead-o