Код: Выделить всё
class FileHandler:
__slots__ = ("_target_path",)
def __init__(self, target_path: Path) -> None:
self._target_path = target_path
class Downloader(FileHandler):
__slots__ = ("_url", "_downloaded_bytes")
def __init__(self, target_path: Path, url: str) -> None:
super().__init__(target_path)
self._url = url
self._downloaded_bytes = 0
Тест и результаты в следующем поле...
foo.py
Код: Выделить всё
from pathlib import Path
from solutions.file.downloader import Downloader
url = "https://www.unicode.org/Public/UCD/latest/ReadMe.txt"
path = Path(__file__).parent / "unicode.txt"
def foo():
downloader = Downloader(path, url)
return downloader.__slots__
if __name__ == "__main__":
foo_val = foo()
print(foo_val) if not foo_val is None else None
Код: Выделить всё
('_url', '_downloaded_bytes')
Итак, похоже, это каким-то образом работает. Однако правильна ли моя реализация? Кроме того, он по-прежнему работает как законные слоты или он решает не использовать слоты и вместо этого использует больше памяти?
Я все еще новичок, поэтому извините за мое невежество. .
Все ответы приветствуются.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/786 ... t-know-why