※当サイトの記事には、広告・プロモーションが含まれます。

Python 3.12.0で漸くPythonのクラスに対して標準で@overrideアノテーションが導入されていた模様

www.itmedia.co.jp

 フランスのエマニュエル・マクロン大統領は8月25日(現地時間)、メッセージングアプリ「Telegram」のパヴェル・ドゥーロフCEOのフランスでの逮捕について、これは政治的な決定ではなく、独立した捜査の一環だと米X上の公式アカウントでコメントした。

TelegramのCEO逮捕についてマクロン仏大統領が異例のコメント「政治的決定ではない」 - ITmedia NEWS

 マクロン氏は、フランスは表現の自由に深く取り組んでいるが、国民を保護し、国民の基本的権利を尊重するために、自由は法的枠組みの範囲内で守られると語った。また、この逮捕が政治的動機によるものだという情報の流布を非難し、「これは決して政治的な決定ではない。この件について判決を下すのは裁判官だ」としている。

TelegramのCEO逮捕についてマクロン仏大統領が異例のコメント「政治的決定ではない」 - ITmedia NEWS

 仏検察当局は同日、ドゥーロフ氏の逮捕に関するプレスリリースを公開した。この逮捕は、CSAM配布、麻薬販売への共謀、マネーロンダリング、法執行機関などの犯罪調査への協力拒否などの容疑で7月8日に開始された「名前の明かされていない人物に対する司法捜査」の一環だと説明した。

TelegramのCEO逮捕についてマクロン仏大統領が異例のコメント「政治的決定ではない」 - ITmedia NEWS

⇧ 問題は、

  • 「犯罪調査」する側
  • 「Telegram」提供側

のやり取りの履歴が分からんのよね...

長期にわたって、「犯罪調査」側の組織が「Telegram」提供側の組織に要請していて、「Telegram」提供側の組織が何も協力しなかったとかであれば、逮捕は妥当かと思われますが、そうでないならば、逮捕は不当な気がしますかね。

つまり、

  • 再三、コンタクトを取っていたかどうか
  • 無理難題を強制していたかどうか

このあたりの状況が把握できないと、「逮捕」が適切な判断と言えるのかどうかが分からないので、憶測が飛び交うことになりますと。

逮捕が妥当かの根拠を、時系列で整理して公開して欲しいとは思いますな。

何にせよ、

また、この逮捕が政治的動機によるものだという情報の流布を非難し、「これは決して政治的な決定ではない。この件について判決を下すのは裁判官だ」としている。

⇧ のような発言を国のトップが発信せざるを得ないような報道の状態は宜しくないですな...

「TelegramのCEO逮捕」の報道が「偏向報道」になってしまっているのが誠に遺憾でありますな...

Python 3.12以前の「オーバーライド(override)」について

ネットの情報を見た限りでは、

ja.stackoverflow.com

Python 3.12以前だと、@overrideアノテーションは用意されていなかったようなので、自作するしかなかった模様。

stackoverflowの情報によると、

stackoverflow.com

Python 3.12で「PEP 698」が導入されたことで、Pythonのクラスに対して標準で@overrideアノテーションが利用できるようになったっぽい。

つまり、利用しているPythonのバージョンが3.12以上であれば、@overrideアノテーションを自作しなくても良くなったということですかね?

ちなみに、

salon.mainichi-kotoba.jp

「以前」は基本的に「基準となる時点や期間を含んで、それより前」(明鏡3版)なので、3月1日に人数が変わった制度で、変更前について「3月以前は○人」とするのは不適切。ただ「『明治以前』では明治は含まないのが一般的」(同)などあいまいな場合もあり、注意が必要です。

「○○以前」「○○以後」は「○○」を含む? 含まない? – 毎日ことばplus

明鏡国語辞典によると「基準の数値を伴う場合は、それを含むと規定される。ただし、数値を伴わないでいうときはあいまい化しやすい」とのこと。

「○○以前」「○○以後」は「○○」を含む? 含まない? – 毎日ことばplus

⇧ 上記サイト様にありますように、「以前」については、「○○以前」の「○○」を含む含まないが曖昧なようです。

本記事の「Python 3.12以前」という記載については、「Python 3.12」を含まないという意図になります。

「以降」についても、

news.mynavi.jp

読み方は「いこう」です。「以」は、「用いる」という意味を持ち、また時間や範囲の起点を表す漢字です。「降」は「後(のち)」という意味を持ちます。そのため「以降」とは、その直前の数字や日付、出来事などを「含んだ」、それより後のことを意味します。

「以降」の意味とは? 当日・その日は含むか含まないのか、範囲や以後との違いを解説 | マイナビニュース

www.nhk.or.jp

今回の「8日以降」も、この「以上」と通じるところがあります。厳密な言い方の場合には「8日」を「含む」のですが、日常のことばとしては「含まない」と考える人も決して少なくはないのです。

「8日以降に手続き」は,8日を含む? 含まない?-NHK

場合によっては、「7日までは手続きができないので、8日以降に手続きをしてください」のように丁寧に言うようにすると、誤解を避けることができます。

「8日以降に手続き」は,8日を含む? 含まない?-NHK

tadasiikeigo.com

ちなみに、「10日以降」という場合は、「10日も含めてその日より後」という意味になります。

「以」には「~より」という意味があるため、基準時である10日も含まれることになるのです。

以後・以降の違い・意味と使い方 10日以降は10日も含む?含まない言い方は?|正しい日本語.com

⇧「以前」と同じ考え方になるってことなんですかね?

う~む、「バージョン」について含まないを伝えたいのであれば、「より前の」「より後の」のような記載にした方が良さそうですかね...

日本語、難しい...

「PEP 698 – Override Decorator for Static Typing」で@overrideアノテーションが導入された模様

確認してみると、

peps.python.org

Abstract

This PEP proposes adding an @override decorator to the Python type system. This will allow type checkers to prevent a class of bugs that occur when a base class changes methods that are inherited by derived classes.

https://peps.python.org/pep-0698/

⇧ 確かに、Python 3.12で、漸くPythonのクラスに対して標準で@overrideアノテーションが導入されていた模様。

で、Python 3.12がリリースされたのはいつだったのかというと、

www.python.org

⇧ 2023年10月2日(月)になるらしい。

今が、2024年8月27日(火)なので、およそ、11か月前までは、「スーパークラス(親クラス)」のメソッドを「サブクラス(子クラス)」で再実装する、所謂、Javaの「オーバーライド」のようなことを実現するケースにおいて、

  1. @overrideアノテーションを自作する
  2. @overrideアノテーションを利用しない

のどちらかの運用をせざるを得なかったと。

「2. @overrideアノテーションを利用しない」を採用した場合、

  • スーパークラス(親クラス)」のメソッドを「オーバーライド」しているメソッド
  • その他のメソッド

のようにメソッドの区別がし辛い状況だったと思われますと。

とは言え、「@overrideアノテーション」の自作は、かなり面倒そうな気がするので、Python 3.12以上を使用するようにして「PEP 698」で導入された「@overrideアノテーション」が利用できる環境で開発していきたいところですかね。

まぁ、Pythonの標準として「@overrideアノテーション」が導入されるのが遅かったのは、Pythonで「オーバーライド」を活用するケースが無かったということなんでしょうかね?

ソフトウェアのデザインパターンの「Template Method パターン」とか利用していれば、「オーバーライド」すること多い気はするんだけど...

相変わらず、Python、何も分からん...

毎度モヤモヤ感が半端ない…

今回はこのへんで。