A、B、Cがクラスであるとしましょう。 CはAとBから継承し、ミックスインとして利用します。Pythonでのmixinsの適切な使用
この時点で、Aはself.whateverを通じてBとCの任意の属性にアクセスできます。 Bはself.whateverを通じてAとCの任意の属性にアクセスできます。そして、Cはself.whateverを通してAとBのどんな属性にもアクセスできます。
Pythonでこの「混合」パターンを使用するときに他者とやりとりする方法を「知っている」べきであるか、あるいはコンセンサスがありますか?例えば、CはA/Bの機能を利用するだけですが、その逆はできません。あるいは、A/BはCの機能のみを利用するべきですが、その逆はできませんか?
EDIT - これは別の著者から継承したコードです。説明は、Pythonでmixinパターンを使用する場合、これは受け入れ可能な設計です。皆さんはそうではないことを確認しました。コメントの中で以下に述べたように、私はこのようにオブジェクト指向設計について決して行きません。私はコードをリファクタリングします。私は、私が理解できなかった "ミックスイン"パターンについての何かがあった可能性に気づきました。また、ダウン票に感謝します。
あなたは、Pythonのクラスがどのように機能するかについて真剣に混乱しているようです。あなたのクラス間のアクセスの例は本当に意味をなさない。 – Marcin
"ミックスイン"はPythonには存在しません(構文構造として、パターンはコードで実装できます)。それはまっすぐ継承です。 –
@Marcin、私が上で述べたことは*技術的には機能しますか?これは私が書いたコードではなく、私が理解していないようなPythonで使用されているミックスインパターンがあるので、著者に疑念の恩恵を与えようとしています。私が上に挙げたもののいくつかの部分を技術的にも可能ではなく、たとえそれがあったとしても、それは恐ろしいオブジェクト指向の設計になるでしょう。私はそれを整えるためにコードをリファクタリングします。 –