これはとてもシンプルなものだと確信していますが、私は新しいです。複数のサブクラスでクラス値をデフォルトとして使用するにはどうすればよいですか?
私はクラスを持っています。のは、私はこのコードを実行すると、私は基本的に「TypeError: __init__() missing 1 required positional argument: 'type'
」
を言うエラーが出る、私の目標はChildSubTypeのために、私は唯一の名前に置くために必要とすることができるということである、とあれば
class Parent:
def __init__(self, name, color):
self.name = name
self.color = color
class Mix:
def BMethod(self):
return '{0} is right'
class Child(Parent, Mix):
def __init__(self, name, color, type):
self.type = 'AAA'
self.color = 'None'
super(Child,self).__init__(name,color)
def __str__(self):
return '{0} is a {1} {2}.'.format(self.name,self.color,self.type)
class ChildSubType(Child, Mix):
def __init__(self, name, color, type):
color = 'None'
kind = super().kind
super(ChildSubType,self).__init__(name,color,type)
def __str__(self):
return "{0} is not a {1} {2}".format(self.name,self.color.self.type)
childsubtype = ChildSubType(
"Name1"
,"White"
)
print(childsubtype)
を呼ぶことにしましょうColorまたはTypeに入れない場合は、デフォルトで色のChildSubTypeクラスの値に設定され、デフォルトではそのタイプのChildクラスに設定されます。
これを達成する方法は完全にはわかりません。
私はそれがChildSubTypeのメソッドと関係があると考えていますが、それが何をしているのかは100%明確ではありません。この時点で、私は基本的に指示に従っており、このロードブロックに衝突しました。
でも、私はでChildSubType
を使わずに実行しようとしましたが、同じエラーが発生しました。私はちょうどクラスの中からデフォルト値を使う方法を知らないと思う。
編集: 申し訳ありませんが、私はそれが働いていると思います。コメントに示唆されているようにデフォルト値を与えるようにコードを更新しました。ここで
は私が変わっものです:
Class Child(Parent, Mix):
def __init__(self, name, color, **type = 'AAA'**):
self.type = 'AAA'
self.color = 'None'
super(Child,self).__init__(name,color)
def __str__(self):
return '{0} is a {1} {2}.'.format(self.name,self.color,self.type)
class ChildSubType(Child, Mix):
def __init__(self, name, color, **type = super(type)**):
color = 'None'
kind = super().kind
super(ChildSubType,self).__init__(name,color,type)
を、私はあなたが理にかなってここにキーワード引数 '__init __(...、タイプ=「デフォルト」)' –
を使用することができると思う...しかし、場合私はChildSubTypeでそれを明確にしていない、どのように私は子クラスからのデフォルト値を呼び出すだろうか? – phroureo
デフォルトの 'type'は' super'呼び出しで渡されます。 –