クラスとは、オブジェクトの型を定義する機能です。クラスをもとに生成されたオブジェクトはインスタンスと呼ばれ、同じクラスの複数のインスタンスは、同じ性質を持ちつつもそれぞれが独立した状態を保持します。Pythonのクラスには、のちほど説明するクラスの継承、メンッドのオーバーライド(上書き)などの機能が備わっており、クラスベースのオブジェクト指向プログラミングができます。
Pythonでは、組み込み型を含めたすべてのクラスの基底クラスとしてobjectクラスがあります。っまり、すべてのオブジェクトはobjectクラスのサブクラスであり、組み込み型も自分が定義したクラスもまったく同じ様にサブクラスに定義できます。
とある書籍に上記のような記述がありました。
python
1class Length(float): 2 def to_cm(self): 3 return super().__str__ + 'cm' 4 5 6pen = Length(16) 7print(pen.to_cm()) 816.0cm
上記のコードだと、floatクラスが継承されているんでしょうか?
このfloat
は、スペシャルメソッドの__float__
とは関係ないものでしょうか?
などとしてください。
また、super()がついてますが、floatクラス内の__str__()
というスペシャルメソッドを呼び出して何をしているのでしょうか?
さらに、to_cm(self)のselfは、何をさしていますでしょうか?クラスインスタンス自身が入る、とよくいいますが、意味がわかりません。インスタンス作成される前になんでインスタンス自身がはいるんだ、ってよく思います。
もし、お気づきの点ありましたらご教示頂けませんでしょうか?
回答2件
あなたの回答
tips
プレビュー