Python EnumのIntFlag

Python学習【365日チャレンジ!】301日目のマスターU(@Udemy11)です。

ちょっと時間ができたので、本格的に革靴のメンテナンスをしていたら、知らない間に2時間も経っていました。

リムーバーで汚れを落として、クリームを塗ってブラシとクロスで磨いて、仕上げにポリッシャーで磨く工程を6足分まとめてやると流石に右腕が筋肉痛になりそうです。

ほんと靴磨きってちょっとした無酸素運動のトレーニングになります。

磨き上がった靴を眺めていると思わずにやけてくるんですよね。

それでは今日も、Python学習を始めましょう。

昨日の復習

昨日は、サーバーの操作で活用できるIntEnumを学習しました。

サーバーの状態をチェックして、データーベースに保存された値を利用して、サーバーの処理を替える動作をEnumでやりましたが、IntEnumを活用することで、条件分岐のコードをよりシンプルにすることができました。

詳細については昨日の記事をごらんください。

今日は、パーミッションの設定でよく使われるIntFlagを学習します。

IntFlag

IntFlagは、サーバーに置かれたファイルのパーミッションを操作する際に使われるなど、最も利用頻度の高いEnumのクラスになります。

まずは、パーミッションの設定についてのコードを書いていきます。

import enum

class Perm(enum.IntFlag):
    R = 4
    W = 2
    X = 1

print(repr(Perm.R | Perm.W))
print(repr(Perm.R | Perm.W | Perm.X))

3行目から6行目でenum.IntFlagを継承したPermクラスを定義しています。

Rが読み込み、Wが書き込み、Xが実行の権限となり、それぞれ数字で4,2,1で定義しています。

こちらはサーバーに置かれているファイルの基本定義で、ホームページを作成したことのある人なら、サーバーに置かれているファイルのパーミッションが644とか755のものがあることご存知かと思います。

8行目は、読み込みと書き込みの論理和を出力していて、9行目は、読み込み書き込みの論理和で、10行目は、読み込み、書き込み、実行の論理和を出力しています。

出力結果

<Perm.R|W: 6>
<Perm.R|W|X: 7>

Pythonオブジェクトとしての値を持ったPermが出力されていますが、保持している整数はそれぞれ67が出力されます。

UNIX

UNIX系のサーバーで使われているパーミッションは、655755といった整数で表されています。

サイトを運営している人なら、パーミッションを変更する時に、これらの数字を見たことがあると思います。

3桁の数字は、左から順番に【オーナーの権限】【グループユーザーの権限】【ゲストの権限】に分かれています。

まとめ

今回学習したIntFlagは、サーバーに置かれたファイルのパージッションで使われるなどEnumの中でも最も使われるコードなので、しっかりと覚えておきましょう。

ターミナルを使ってパーミッションの確認や変更もできるので、サイトをお持ちの方は、一度試してみてください。

ということで、明日もGood Python!