SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Pythonで学ぶバックエンド開発

【Pythonの基本】Webページのサーバサイドで使うPython文法について解説

Pythonで学ぶバックエンド開発 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

クラスの文法

 「クラス」は、「設計図」のようなものでそれ自体では何もできません。そのクラスをもとに作った「インスタンス(実体)」を使って操作することができる文法です。大抵のプログラミング言語にはクラスがあり、クラスを使ったプログラミングを「オブジェクト指向プログラミング」と呼びます。

 この連載では用意されたクラスを使うことはありますが、オリジナルのクラスを作ることはありません。ですが、今後何かの役に立つように一応クラスの解説もしておきます。

Pythonのクラス
Pythonのクラス

メソッドとプロパティとインスタンスの生成

 クラスには主に「メソッド」と「プロパティ」があり、他にも「クラスメソッド」や「スタティックメソッド」などもあります。メソッドとはクラスに属する「関数」のようなもので、プロパティとはクラスに属する「変数」のようなものです。

 次のサンプルコード「classAdd.py」のようにここでは「Add」クラスでは、初期化の「__init__」メソッドと、プロパティの「self.sum」と、「plus」メソッドで構成されています。「変数 = クラス名()」でAddクラスのインスタンスを生成し「ins」変数に代入します。「インスタンス変数.メソッド名(引数)」でクラスのメソッドを呼び出します。メソッドは関数のようにクラス内で「def」で宣言し、第一引数は必ず「self」です。プロパティはクラス内では「self.プロパティ名」で変数のように代入や取得ができます。

サンプルコード「classAdd.py」
class Add:
  def __init__(self):
    self.sum = 10

  def plus(self,num):
    self.sum += num
    return self.sum

if __name__ == "__main__":
  ins = Add()
  sum = ins.plus(10)
  print(sum)

継承とオーバーライド

 先ほどのclassAdd.pyが同じディレクトリにあるものとして「derive.py」をコーディングします。「from モジュール名 import クラス名」でモジュールを呼び出します。先ほどのclassAdd.pyファイルをモジュールとして読み込みますが、classAdd.pyの「if __name__ == "__main__":」の部分はderive.pyがメインのファイルなので実行されません。

 「class 子クラス名(親クラス名):」で親クラスを継承した子クラスを宣言します。子クラスでは親クラスのplusメソッドやsumプロパティが使えます。__init__メソッドは親のAddクラスを上書き(オーバーライド)するので、親の__init__は明示的に「super().__init__()」を呼び出さないと実行されません。クラスのプロパティは「インスタンス変数.プロパティ名」で代入や取得ができます。

サンプルコード「derive.py」
from classAdd import Add

class NewAdd(Add):
  def __init__(self):
    super().__init__()

  def plus_plus(self,num):
    self.plus(num)
    self.plus(num)

ins = NewAdd()
ins.plus_plus(10)
print(ins.sum)

クラスメソッド

 クラスメソッドはクラスのメソッドとは違って、インスタンスを生成することなく「クラス名.クラスメソッド名()」といきなりクラスメソッドを呼び出すことができます。

 またクラスメソッドではクラスのプロパティも使えますが、他のインスタンスで保持するプロパティの値とは別になります。これはインスタンスが異なれば同じクラスでも別の値を保持するのと同じです。

サンプルコード「classmethod.py」
class Add:
  sum = 10
  def plus(self,num):
    self.sum += num
    return self.sum

  @classmethod
  def plus2(cls,num):
    cls.sum += num
    return cls.sum

if __name__ == "__main__":
  ins = Add()
  sum = ins.plus(10)
  print(sum)
  sum = Add.plus2(10)
  print(sum)

おわりに

 今回はWebアプリのバックエンドで使うPythonの最低限知っておくべき文法を解説しました。次回はWebアプリのバックエンドを使ってWebページを表示する解説をします。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Pythonで学ぶバックエンド開発連載記事一覧
この記事の著者

大西 武(オオニシ タケシ)

 1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21525 2025/06/09 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング