0

スーパークラスから継承するPythonのクラスがいくつかあります。スーパークラスには、いくつかの値を含む辞書があります。一部の派生クラスは、属性アクセスを介してこのディクショナリを直接使用します。ただし、派生クラスの一部は独自のディクショナリを定義し、スーパークラスのディクショナリを上書きします。

これにより、クラスがスーパークラスからディクショナリ属性を継承するか、独自の属性に置き換えることができる、オールオアナッシングの状況が作成されます。

下位互換性があり、好ましいpythonistic-で、クラスに親の辞書を継承させ、独自のエントリで拡張する方法はありますか?すべてがメソッドでアクセスされた場合、継承されたクラスで次のように何かを実行します。

class SuperClass(object):
   my_dict = {'key': 'value'}
   def get_dictioary(self):
        return my_dict

class Inherited(SuperClass):
    my_dict = {'some key': 'some value'}
    def get_dictionary(self):
        dictionary = super(SuperClass, self).get_dictioary().copy()
        dictionary.update(my_dict)
        return dictionary
4

1 に答える 1

1

サブクラス coudl は、インスタンス化時に辞書を取得します

class Inherited(SuperClass):
   my_dict = {}
   def __init__(self, a_dict):
      # get Superclasses dict
      Inherited.my_dict = SuperClass.my_dict
      # update with child class specific values
      Inherited.my_dict.update(a_dict)


in = Inherited({'some key': 'some value'})
in.my_dict #Inherited.my_dict
# {'key': 'value', 'some key': 'some value'}
于 2012-11-13T17:17:33.237 に答える