組み込み開発のためのPython · レッスン 118 / 220

カプセル化で不変条件を守る

カプセル化は内部状態の変更経路を制限し、オブジェクトの整合性を保ちます。Pythonのアンダースコアはアクセス禁止機構ではないため、公開APIと規約を明確にします。

カプセル化は内部状態の変更経路を制限し、オブジェクトの整合性を保ちます。Pythonのアンダースコアはアクセス禁止機構ではないため、公開APIと規約を明確にします。 このページでは、構文だけでなく、入力の検証と再現可能な確認方法も扱います。

考え方と使いどころ

カプセル化は内部状態の変更経路を制限し、オブジェクトの整合性を保ちます。Pythonのアンダースコアはアクセス禁止機構ではないため、公開APIと規約を明確にします。

組み込み開発での注意点

クラスを導入するのは状態と操作を一緒に管理する必要がある場合です。単純な変換には関数の方が明快なこともあります。

コード例

手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。

class Reading:
    def __init__(self, channel: str, value_mv: int) -> None:
        if value_mv < 0:
            raise ValueError("負の値は扱えません")
        self.channel = channel
        self.value_mv = value_mv

sample = Reading("A0", 3290)
print(sample.channel, sample.value_mv)

手を動かす課題

状態変更を専用メソッドに集約し、許可されない状態遷移を拒否してください。

参考資料

「クラスとオブジェクト指向」の章一覧へ