Pythonでオブジェクトの型に準備されている通常メソッドの一覧を出力する関数

Pythonを勉強していると、「この型のメソッドは何だろう?」と思う時があります。
この時、オブジェクトを obj とすると

dir(obj)

とすることで、一覧を得ることができます。

たとえば、リスト型のメソッドを知りたいとします。dir() を使うと以下のようになります。

x = [1, 2]
dir(x)

[code lang=text]
['__add__', '__class__', '__class_getitem__',
 '__contains__', '__delattr__', '__delitem__',
 '__dir__', '__doc__', '__eq__', '__format__',
 '__ge__', '__getattribute__', '__getitem__',
 '__gt__', '__hash__', '__iadd__', '__imul__',
 '__init__', '__init_subclass__', '__iter__',
 '__le__', '__len__', '__lt__', '__mul__',
 '__ne__', '__new__', '__reduce__', '__reduce_ex__',
 '__repr__', '__reversed__', '__rmul__', '__setattr__',
 '__setitem__', '__sizeof__', '__str__', '__subclasshook__',
 'append', 'clear', 'copy', 'count', 'extend',
 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
[/code]

ここで、”–” からはじまるメソッドは特殊メソッドと言われ、その型の振る舞いを細かく調整するものとのことです。今回はここには踏み込みません。

今、私は、「通常メソッドだけリストアップしたい」と思いました。どうしたらできるでしょうか?

続きを読む

bash でディレクトリ変数の展開を有効にする direxpand を設定する方法

Ubuntu 22.04 から、ターミナルでの変数を使ったディレクトリ移動が厄介になりました。

例を挙げます。

FSLのインストールパス は変数 $FSLDIR に入っています。私はこれまでは、$FSLDIR/standard にアクセスしたい場合

cd $FSLDIR までタイプしたら、その後、タブキーをタイプすると、シェルが自動で cd /usr/local/fsl と変数を展開してくれて、その後のディレクトリをタイプしていました。

しかし、Ubuntu 22.04 から、同じことをすると

cd \$FSLDIR/

と変数がエスケープされてしまい展開されなくなってしまいました。

これは不便です。

調べたところ、shopt というコマンドがあることを知りました。

続きを読む

LinuxやmacOSでPythonの仮想環境を構築する方法

過去に、Anacondaに頼らない、pipとvenvを用いたPython環境の構築 という記事を書きました。今回、改めて、Pythonの仮想環境について理解が深まったので書きたいと思います。

仮想環境を構築したい背景

  • Python は、ひとつのシステムに様々なバージョンが存在しえます。macOSでの場合を、macOS の Python事情を理解するに解説しました。LinuxやWindowsも同じで複数のバージョンが存在しえます。
  • また、LinuxやmacOSにおいて、Pythonは、システムの重要なところを担っていたりします。Ubuntuであれば、 dpkg -l | grep python3 とすると、どれだけ多くの Python3に関連したパッケージがシステムにインストールされているかを確認することができます。

  • このような状況において、システムのPythonに追加でパッケージを入れていって、もし不具合が起きた場合、システムそのものが不安定になる可能性があります。

  • Pythonの仮想環境を使うと、システムの中に、独立したPythonの環境を構築することができます。「独立している」というのは、システムに一切影響を与えないということを意味します。不要になったらばっさり削除しても一切問題ありません。

  • そこで、以下で、仮想環境の構築の仕方を解説します

続きを読む