Pythonを知っている人が使うフレームワークを書いています。私はいくつかの構文に落ち着きました、そして私と彼らがこのようなものを使うことは理にかなっています、ここでBaseはフレームワークを実装するBaseクラスです。
class A(Base):
@decorator1
@decorator2
@decorator3
def f(self):
pass
@decorator4
def f(self):
pass
@decorator5
def g(self)
pass
私のフレームワークはすべて、Baseのメタクラスを介して実装されています。これらのユーザー定義クラスはすべて豊富な継承グラフを持っているため、このセットアップは私のユースケースに適しています。ユーザーがいくつかのメソッドを実装するか、そのままにしておくことを期待していますpass
。ユーザーがここで提供する情報の多くは、デコレーターにあります。これにより、ユーザーがモンキーパッチを適用したり、構造化されていない辞書を提供したりする必要がある他のソリューションを回避できます。
ここでの私の問題は、f
(正当な理由で)ユーザーによって2回定義されていることであり、これは私のフレームワークによって処理される必要があります。残念ながら、これがメタクラスの__new__
メソッドに到達するまでに、属性のディクショナリには1つのキーしか含まれていませんf
。@duplicate
私のアイデアは、ユーザーがこれが起こっていることを通知するなど、さらに別のデコレータを使用することでした。また、2つf
は互いに上書きされないように、異なる方法でラップされます。このようなものは機能しますか?