pythonのクラス継承について。
class child(parent):
def init(self):
super().init(●●●)
●●●の部分の最初に「self」が必要だと思っていたのですが、selfを書くと以下のエラーになります。
原文
UFuncTypeError: Cannot cast ufunc 'add' output from dtype('O') to dtype('float64') with casting rule 'same_kind'
deepLでの翻訳
UFuncTypeError: ufunc 'add' の出力を dtype('O') から dtype('float64') にキャストできません キャストルール 'same_kind' が適用されます
一方で、selfを書かなければ、思った通りの挙動になりました。
また、
parent.init(self, ~)
という表記にしても、思った通りの挙動になりました。つまり、super()と書くのではなく、親クラス名を直接書くわけです。
これはどういう現象なのでしょうか?
ちなみに、他でも同じようなことをしているのですが、そっちでは
super().init(self, ~)
という書き方でいけてます。この謎を教えてください。
親クラスの init() はどのように定義されていますか。
返信ありがとうございます!
このようになっています!
親の上に、さらに親が5代ほど続いているようなのですが・・・
def __init__(
self,
point: list | np.ndarray = ORIGIN,
radius: float = DEFAULT_DOT_RADIUS,
stroke_width: float = 0,
fill_opacity: float = 1.0,
color: Color | str = WHITE,
**kwargs,
):
super().__init__(
arc_center=point,
radius=radius,
stroke_width=stroke_width,
fill_opacity=fill_opacity,
color=color,
**kwargs,
)

回答2件
あなたの回答
tips
プレビュー