python とほほさん
- とほほさんのpythonはやはりわかりやすい
- クラス
class MyClass2(MyClass):
-
-
- と、書けば、MyClassが親クラス、MyClass2が子クラス
- 子クラスは親クラスのメソッド(・変数)を継承できるし、上書きもできる
- 親は複数いてもよい
-
- インポート
- インポートには色々な書き方があって、覚えきれない感満載
- さて
- こちらにもインポートに関する記事があります
- どうもこういうことのようです
- __init__.pyというファイルをディレクトリ構成に配置することで、モジュールファイル群に階層構造を入れながら、全体を一つのモジュールのようにして参照可能にしたものがパッケージである、と
- その上で、それを取り込みたいのだが
- 構成があり、親子関係があるのでそれを意識して取り込みたい
- 取り込んだ後に、どういう名前で呼び出すかを決めたい
- という2つの要請がある
- from A.B.C というのは、親子関係を指し示しつつ、取り込みディレクトリ/ファイル名を指定する
- import D.E.F というのは、実際に読み込む塊を指定する。指定できるのは、色々な高さのディレクトリであったり、ファイルそのものであったり、ファイル内の関数であったりする
- さて。これにより、D.E.F という名前が『理解できる』状態が作れました、と、そういうことらしい。D.E.F 自体が関数なら、D.E.FをD.E.Fと呼び出して使えばよい。D.E.Fがモジュールなら、D.E.F.hogefxと関数を呼び出せばよい
- 結局、A.B.C.D.E.Fと長ったらしいけど、 import A.B.C.D.E.Fとすると、長い名前の全体で理解可能になるのに対して、from A.B.C import D.E.Fとすると、D.E.Fで理解可能にできる、という「利用時の省力化」の手段がfrom の役割と見える
- 同様の「省力化」の手段が、別名での取り込みで、import D.E.F as G は、Gで呼び出せるようにする仕組み
- 省力化を短い階層構造にするか、別名にするか、の違いだけ
- * を使う方法というのは、(__all__で指定された)すべての名前を利用可能にするおまじないだが、まあ、明示しながらやることが推奨されているので、これは基本的には使わないことにしておけばよい