自動化されたジェネレータ用にデータ構造を設定しようとしています。私はロールプレイゲーム用に作成していますが、いくつかの特定の継承特有の問題があります。データ構造の抜粋です。特定のクラス継承の動作に問題がある
class data():
def __init__(self):
self.races = Races()
class Races(data):
def __init__(self):
self.humans = Humans()
class Humans(Races):
def __init__(self):
self.Characteristics = {
'Brawn':2,
'Agility':2,
'Intellect':2,
'Cunning':2,
'Willpower':2,
'Presence':2
}
構造にはまだ多くの部分がありますが、これは単なる下から上の概要です。私はそれが奇妙にインデントされていることも知っていますが、それは厳密にスタックオーバーフローです。
今、私はこのオブジェクトから2つの動作をしたいと思います。 data.races.humans.Characteristic['brawn']
を呼び出す形式として任意の特性を呼び出すことができます。私は、オブジェクトをインスタンス化している明らかにした後 (subclass for subclass in data.races.__subclasses__())
:
そして、あまりにものような発電機とサブクラスを反復処理することができます。
は今、私は構造を数回変更しようとしていると私はドット表記でそれを呼び出すことができますもその私はそれを得ることができますが、それは、完全に、より伝統的な構造にそれを分離することによりAttributeError: 'Races' object has no attribute '__subclasses__'
またはその逆を返しますが、私はドット表記法を呼び出すことはできません。これにより、すべてを整理して読みやすくすることが非常に難しくなります。
誰かが私が間違っていることを提案したり、問題に近づくためにもっとPythonの方法を提案できますか?
注意してください - あなたが構成を望むように聞こえます、継承ではありません。人間はレースかもしれませんが、レースはデータではありません。 –
人間がレースにリンクされ、レースはデータにリンクされていないのと全く同じ方法で作られていますか? それらが同じトップレベルオブジェクトに関連する理由は、データの種類が異なり、それをすべて自分のモジュールに入れて1つのオブジェクトをインスタンス化したいからです。 –
@KirkReynolds 'data'は、' Race'が継承する単一のクラスではなく、 'race = [Human、Elf、Dwarf、...]'クラスのリストにすることができます。ポイント。実際には、どのようにデータをモデル化する必要があるかによって異なります。私は私の答えにちょっとした味を与えようとしましたが、あなたの質問はあまりに広範囲であり、ここでは役に立ちません。 – chepner