次のクラス編成への「pythonic」アプローチを見つけるのに苦労しています。
コンストラクターでプロパティが初期化された基本クラスがあります。次に例を示します。
class Animal(object):
def __init__(self, class_, species, is_domesticated):
self.class_ = class_
self.species = species
self.is_domesticated = is_domesticated
次に、サブクラス化するときに、次のように、これらのプロパティの1つ以上を「ハードコーディング」したいと思います。
class Mammal(Animal):
def __init__(self, species, is_domesticated):
Animal.__init__(self, 'Mammal', species, is_domesticated)
したがって、哺乳類は次のようにインスタンス化されます。
monkey = Mammal('Primate', false)
問題は、基本クラスの定義を変更するときに派生クラスをそのままにしておくために*argsを使用したいということです。したがって、哺乳類の定義は次のようになります。
class Mammal(Animal):
def __init__(self, *args):
Animal.__init(self, *(args + (class_='Mammal',)))
これは(言うまでもなく)恐ろしいように見えます。いくつかのヒントをいただければ幸いです=)