Пишу что-то вроде бд которая крутиться в оперативной памяти
(just for fun)
#!/usr/bin/python # -*- coding: utf-8 -*- class File: def __init__(self, **kwargs): for k, v in kwargs.items(): setattr(self, k, v) def getHost(self): return FileDb.hosts[self.host_id] class Host: __slots__ = ('id', 'name', 'enc', 'paths', 'files', ) files = [] def __init__(self, **kwargs): for k, v in kwargs.items(): setattr(self, k, v) def addFile(self, fullname, size): # parsing fullname path, name = fullname.rsplit('/', 1) if '.' in name: name, ext = name.rsplit('.', 1) else: ext = None file_inst = File( name = name, ext = ext, size = size ) self.files.append(file_inst) return file_inst def countFiles(self): return len(self.files) class FileDb: hosts = {} def __init__(self): for x in range(5): self.hosts[x] = Host( id=x, name='name_%s.ru' % x ) def getHost(self, id): try: return self.hosts[id] except KeyError: pass def countFiles(self): res = 0 for id in self.hosts: res += self.hosts[id].countFiles() return res db = FileDb() db.getHost(1).addFile('/fdg/dgfdf/dfg.txt',565) print db.countFiles()# выводит 5, т.е к каждому хосту был добавлен файл
Объясните пожалуйста почему при добавлении файла, он добавляется ко всем хостам ?