Я уже некоторое время использую python, и я счастлив использовать его в большинстве форм, но мне интересно, какая форма более питоническая. Правильно ли эмулировать объекты и типы или лучше наследовать или наследовать от этих типов. Я вижу преимущества для обоих, а также недостатки. Какой правильный способ сделать это?
Метод подклассов
class UniqueDict(dict):
def __init__(self, *args, **kwargs):
dict.__init__(self, *args, **kwargs)
def __setitem__(self, key, value):
if key not in self:
dict.__setitem__(self, key, value)
else:
raise KeyError("Key already exists")
Метод эмуляции
class UniqueDict(object):
def __init__(self, *args, **kwargs):
self.di = dict(*args, **kwargs)
def __setitem__(self, key, value):
if key not in self.di:
self.di[key] = value
else:
raise KeyError("Key already exists")