So lösen Sie eine zirkuläre Abhängigkeit auf (Python)Python

Python-Programme
Anonymous
 So lösen Sie eine zirkuläre Abhängigkeit auf (Python)

Post by Anonymous »

Ich bin beim Implementieren eines virtuellen Dateisystems
auf ein zirkuläres Importproblem gestoßen:

Code: Select all

from typing import TYPE_CHECKING

if TYPE_CHECKING:
from .directory import Directory
from .archive import Archive

class VFile:
def __init__(self, data: bytes, parent: Directory | Archive ...):
...

Code: Select all

class Archive(VFile):
def _read(self):
for m in metadata:
data = ...
FileType = guess_type(data)
self.files.append(FileType(data, self))
...

Code: Select all

from .util import guess_type
class Directory(VFile):
def _parse_btree(self):
FileType = guess_type(data)
self.files.append(FileType(data, self))
...

Code: Select all

from .common import VFile
from .archive import Archive
from .directory import Directory

def guess_type(data: bytes) -> type[VFile]:
if is_archive(data):
return Archive
if is_dir(data):
return Directory
...
return VFile
Die Verwendung von TYPE_CHECKING löst einen Teil des Problems, aber ich kann den Rest nicht lösen, ohne alle Dateien zu einer (sehr großen Datei) zu verketten.
Wie kann ich das umgestalten?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post