Создать каталог папок в виде древа, используя рекурсию
Есть два класса, папка и файл. Аттрибуты(поля) файла: размер и название.
Класс папка(folder) представляет собой древо внутри которого могут быть другие папки и файлы. Аттрибуты(поля) папки: размер, название и сабдрева. При калькуляции размера папки, каждая папка(пустая или нет) имеет размер 1 + размеры файлов внутри нее. Имплементируйте функцию и инициализаторы классов.
def file_ierarchy(input: tuple[str, int | list]) -> Directory:
""" Используя рекурсию создайте из ввода который показывает иерархию папок в системе в
виде древа.
>>> my_folder = file_ierarcy(((".", [
("docs", [("cotnract.pdf", 13), ("excel1.xlsx", 10)]),
("images", [("family", [("us.png", 5)])]),
("favorite_song.mp3", 14),
("empty_file", [])
])
))
>>> my_folder.size
47
>>> len(my_folder.subtrees)
4
>>> isinstance(docs, Folder)
True
>>> documents.data_size
>>> 24
>>> images.data_size
>>> 7
"""
class File:
def __init__(self, name, size):
class Folder:
def __init__(self, name, size, subtrees: list):
Источник: Stack Overflow на русском