【Python】メソッドのオーバーライドとsuper関数2020年4月30日Python学習Python学習【365日チャレンジ!】80日目のマスターU(@Udemy11)です。新年度が始まった4月も今日で最後になりましたが、4月の終わりに、切りの良いPython学習80日目を迎えられたのはなかなか気分がいいもんです。いえ、いまの世の中はまさに、自宅にいることが求められている時期ですので、少し気分は沈みがちになりますが、逆に時間を有効に使えるチャンスと考えて、Udemyの講座を受講し、スキルアップを図りましょう。こんなときだからこそ時間を有効活用して、自分のスキルを磨くか、永遠とYoutubeループを見つづけて無駄な時間を過ごすか、あなたの行動次第であなたの未来が大きく変わります。昨日は、クラスの継承について学習しました。driveCarをベースクラスとして、5行目でToyotaCarクラスがCarを継承することで、Carに定義されたdriveメソッドを使うことができました。ちなみに、passは何もしないという意味でしたね。クラスの継承の詳細については、昨日の記事を参考にしてください。Udemyのセールを活用してほしかったあのスキルを手に入れよう!【非公式】2020.04.29【Python】クラスの継承とはhttps://udemyfun.com/python-class-inheritancePython学習【365日チャレンジ!】79日目のマスターU(@Udemy11)です。以前、U-NEXTを使っていたときがあったのですが、昨日紹介したAmazonプライムビデオと同じように、ある程度見放題の映画も揃っています。あと、U-NEXTの強み!?としては、動画配信サービスの中で唯一と言えるセクシー系の映像も扱っているんですよね。そちらメインで利用している人も多いかもしれませんが、メッキの刃やヒロアカ、ハイキューなどの人気アニメが見放題になっているのも魅力の一つで、31日間の無料体験期間があるうえ、新規登録で600円分のポイント...それでは今日の学習内容にはいりましょう。メソッドのオーバーライドメソッドのオーバーライドとは、ベースクラスで定義したメソッドを継承先のクラスで上書き処理をすることです。driveに上書きされます。これは、引数のデフォルト値を入れているけど実行時に引数の値を入れるのと似ていますね。ベースクラスで定義しているので、継承先のクラスでは記述の必要はないが、オーバーライドによって上書きが可能ということです。続いて、コンストラクタで指定してしたベースクラスの引数をsuper()を使ってオーバーライドしてみます。Falsesuper()は、ベースクラスのことを指すので、7行目のsuper().__init__(name)は、Carのnameということです。NoneだったnameをCrownに上書きするために、super()を使っているということです。nameと記述しても問題ないんじゃないの?と思った方もいるかもしれません。わたしもそう思いました。super()を使ってベースクラスを参照するのか不思議ですよね。その答えは、オーバーライドにあって、クラスを継承した先で__init__でコンストラクタを定義すると、すべて上書きされるので、ベースクラスで定義した処理がなくなってしまいます。print(133221)このように数字を出力する処理をしていた場合(こんな処理はまずありえませんが例として)、クラスを継承したToyotaCarで、コンストラクタを記述していなければ、ToyotaCarのインスタンスを作った際に、4行目から6行目の数字が出力されます。次のように__init__をオーバーライドしてnameを変更すると、__init__がまるごと上書きされるので、ベースクラスの4行目から6行目が削除されてしまい、数字が出力されません。ベースクラスの数字の出力がない__init__に上書きされるsuper()を使えば、__init__の一部分だけを指定して変更することができるわけです。次のような記述にすれば、ToyotaCarのインスタンスを作成したときに、初期化で4行目から6行目の数字が出力されます。ToyotaCar()出力結果111112345133221ほんとややこしいですが、10行目のsuper().__init__(name)は、ベースクラスの__init__の第一引数(name)に、新しいnameを代入していることを理解しておきましょう。パズル引数が絡んできて、一体どの値を変更しているのかわけが分からなくなってしまいます。今回も記事を書きながら、どのnameを指定しているのか、名前を変えながら、いろいろと試してようやく理解できたのですが、最初はなにがなんやらよくわかりませんでした。なんとなく聞いていれば、わかった気になってしまうのですが、実際にコードを理解するには一つ一ついじりながら変更してみてはじめて分かることがたくさんあります。コードをそのまま写経するのも勉強になりますが、ちょっと変えてみたり、追加したりすることで、どのように動いているのかがより理解できるようになります。Udemyがセールをしているかどうかは、こちら...【Python】模範的な対話アプリケーションの構造解説(MVCモデル)Python学習【365日チャレンジ!】109日目のマスターU(@Udemy11)です。なにげに玄関を眺めていると、アシナガバチがポストに入って...【Python】マルチスレッドとマルチプロセスについてPython学習【365日チャレンジ!】203日目のマスターU(@Udemy11)です。9月になって少しは過ごしやすくなるのかと思いきや、まだま...【Python】簡単な対話アプリケーションの作成Vol.7Python学習【365日チャレンジ!】108日目のマスターU(@Udemy11)です。ホットケーキミックスが品薄になっていたらしですが、大量の...【Python】インフラの仮想環境を構築するイメージを理解しようPython学習【365日チャレンジ!】239日目のマスターU(@Udemy11)です。Keysのキー割り当てにハマった話Googleスプレッドシートの使い方講座Anacondaのアンインストールからの再インストールrequestsを使って仮想通貨のデータを取得Python学習【365日チャレンジ】を振り返ってみます。(2)Amazonのアソシエイトとして、当メディアは適格販売により収入を得ています。