私の継承構造に問題があることを意味する例外が発生していますが、問題を把握することはできません。tkinterを使用するとクラス継承の問題
import tkinter as tk
class Game(tk.Tk):
class Period(tk.Frame, Game):
class PeriodSummary(tk.Frame,Period):
これはexcpetionを与える:
Traceback (most recent call last):
File "tkinter_test.py", line 4, in <module>
class PeriodSummary(tk.Frame,Period):
TypeError: Cannot create a consistent method resolution
order (MRO) for bases Frame, Period
だから私はPeriod
から属性を継承するGame
、およびPeriodSummary
から属性を継承するPeriod
を持っていると思います。なぜこれはできないのですか?
継承の仕組みについて根本的な誤解があるようです。 'PeriodSummary'が他のクラスから継承する必要があるのはなぜですか?なぜ、ゲームの一部ではなく、「期間」も「ゲーム」ですか?あなたはそれが達成したと思いますか? –
'ゲーム'には多くの '期間'があります。それぞれの期間がプレイされた後、私は 'PeriodSummary'フレームが来るようにしたいと思います。 'Period'は' Game'から属性を必要とするため継承しますが、属性も異なります。 – splinter
ちょうどあなたが書いたものを読んでください:ゲームには多くの期間があります。各期間はあなたの遺産が言っているゲームではありません。 1つの 'Game'オブジェクトは、いくつかの' Period'オブジェクトを属性として持つべきです。継承を使用したくないのは、データを共有する必要があるという理由だけです。これは継承の目的ではありません。 –