我试图让Python中的dict
般类。覆盖字典()上
当你犯了一个类,你有一定的方法,告诉Python中如何做一个内置类。例如,覆盖__int__
方法告诉Python中,如果用户在类的一个实例使用int()
什么返回。与__float__
相同。你甚至可以控制Python的将被重写__iter__
方法(这可以帮助的Python使list
S和tuple
是你的类的)使类的迭代对象。我的问题是你如何告诉Python如何使你的自定义类的dict
?没有特别的__dict__
方法,那么你怎么去做呢?我想类似如下:
class Foo():
def __dict__(self):
return {
'this': 'is',
'a': 'dict'
}
foo = Foo()
dict(foo) # would return {'this': 'is', 'a': 'dict'}
我试着从dict
制作类继承,但它因为子类试图从dict
和type
继承的代码后引发错误,从dict
ISN所以继承没有可能性。有没有其他方法可以做到这一点?
而且,我已经覆盖了__iter__
方法已经以便它会返回一个dict_keyiterator
对象(被退回什么,当你对一个dict
使用iter()
),但它似乎仍然没有工作应该如何。
你试过从'collections.abc继承* Mapping'了吗? –
'collections.abc.Mapping'是一类'ABCMeta'。我的很多代码已经建立在'type'元类的基础上,所以很多代码与'ABCMeta'不兼容。我可以通过我的所有代码试图改变它'ABCMeta'工作,但我只是希望有可能是不依赖于像'Mapping'一个抽象类的简单方法。 – ChristianFigueroa
只需在您的类中添加一个'@ staticmethod',并将其命名为'to_dict',您可以明确地将其命名为字典。即'result = foo_obj.to_dict()'。 – martineau