O que é mais pythonic - subclassing dict ou criar funções externas para manipulá-las?

5

Digamos que eu tenha um dicionário que contenha classes complexas que precisam ser carregadas e descarregadas de uma maneira especial. (Não especialmente especial, apenas fora dos limites desta questão.) Devo graciosamente subclasse o dict embutido assim:

class ExampleClass(dict):
    def __str__(self):
        return 'ExampleClass; '+dict.__str__(self)

    @classmethod
    def loads(cls, string):
        <load object from string here>

    def dumps(self):
        <dump object here>

Ou faça algo assim:

def load_special_structure(string):
    <load object from code here>

def dump_special_structure(obj):
    <dump object here>

Essa é toda a funcionalidade extra de que preciso. Não é muito pythonic ter que usar um método especial importado para despejar e carregá-lo, mas a subclasse de um dicionário também não é. Na perspectiva do uso, poder importar essa classe, carregá-la de uma string e usá-la como um dicionário é realmente útil.

    
por noɥʇʎԀʎzɐɹƆ 10.07.2015 / 19:21
fonte

1 resposta

4

Em geral, no Python eu prefiro usar funções sobre subclasses de classes internas. No final, se você escrever seu método String -> dict , acabará trabalhando com dict , pura como a neve dirigida. Basta colocar suas funções em um módulo sensato e importá-las somente quando necessário; Isso também incentivará você a não a importar as funções para todos os lugares, o que ajudará você a manter o IO separado da sua lógica.

    
por 10.07.2015 / 19:40
fonte