Loading [MathJax]/extensions/tex2jax.js

Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Python

Pythonのコンストラクタの基礎と「self」や「__init__」について

投稿日:2021年1月3日 更新日:

<目次>

(1) Pythonのコンストラクタの基礎と「self」や「__init__」について
 (1-1) 「__init__」やコンストラクタについて
 (1-2) コンストラクタで使われる「self」について
 (1-3) コンストラクタの構文
 (1-4) コンストラクタのサンプルプログラム

(1) Pythonのコンストラクタの基礎と「self」や「__init__」について

(1-1) 「__init__」やコンストラクタについて

Pythonで見る「__init__()」はPythonにおける「コンストラクタ」のメソッドです。

コンストラクタは通常はクラスからオブジェクト(≒インスタンス)を初期化(実体化)する際に使われます。具体的にはクラスのオブジェクトが生成される際に、メンバ変数に値をセットする処理を、初期化として行います。

Pythonでオブジェクトが作られる際は、この「__init__()」が常にコールされます。
 

目次にもどる

(1-2) コンストラクタで使われる「self」について

コンストラクタで使われる「self」はクラスのインスタンス自身を表します。
(例)

  1. def __init__(self,[引数1],[引数2],[引数3],・・・):
  2.  

「self」をコンストラクタやメソッドの「引数」として与える事で、クラス内の変数やメソッドにアクセスする事ができます。
(例)

  1. self.[メンバ引数] = [引数]
 
Java等をご存じの方は、引数の名前とメンバ変数の名前が同じ時の「this」に近いなと思われたかも知れません。確かに似ている部分もありつつ、Pythonではselfをメソッドの引数としても使う点などの相違点もあります。
 

(1-3) コンストラクタの構文

前の節でもちらっと登場しましたが、コンストラクタの構文は次の通りです。
(構文)

  1. def __init__(self,[引数1],[引数2],[引数3],・・・):
  2. self.[メンバ変数1] = [引数1]
  3. self.[メンバ変数2] = [引数2]
  4. self.[メンバ変数3] = [引数3]
  5. ・・・

(図131)コンストラクタの引数に「self」を使用した例

(図132)メソッドの引数に「self」を使用した例

目次にもどる

(1-4) コンストラクタのサンプルプログラム

(サンプルプログラム)

  1. class Person:
  2. # コンストラクタでメンバ変数を初期化
  3. #  引数のselfはインスタンス自身を表し、
  4. #  self.[メンバ変数名]で変数にアクセスできる。
  5. def __init__(self, firstname, lastname, age):
  6. self.firstname = firstname
  7. self.lastname = lastname
  8. self.age = age
  9.  
  10. # メソッドの引数にselfを指定した例
  11. #  こちらも同じくself.[メンバ変数名]でインスタンスのメンバにアクセスできる
  12. def greeting(self):
  13. print('I am',self.firstname,self.lastname,'and my age is',self.age)
  14.  
  15. def main():
  16. # Personクラスのインスタンスを生成
  17. p = Person('Rainbow','Planet',30)
  18. # greetingメソッドの実行
  19. p.greeting()
  20.  
  21. if __name__ == '__main__':
  22. main()

(図141)実行結果
引数で与えた値を用いて、greetingのメッセージが表示されています。
(コンストラクタにより正常に初期化が行われた)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Pythonで画像をcsvに変換する方法について

  <目次> (1) Pythonで画像をcsvに変換する方法について  (1-0) やりたいこと  (1-1) STEP1:前提(Kerasにおける画像データの取り扱い形式)  (1-2) …

PythonでHTTP Error 403: Forbiddenエラーが出た時の対処方法とエラーの意味について

(0)目次&概説 (1) エラー:HTTP Error 403: Forbidden  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処方法   (1-3-1) 修正前の …

PythonでSQLAlchemyを使ってOracleDBに接続する方法

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) 事前準備  (2-1) 準備1(cx_oracleパッケージの導入)   (2-1-1) インストール資源の入 …

PythonのSQLAlchemyで「ArgumentError : Could not parse rfc1738 URL」エラーや「InvalidRequestError: Could not reflect: requested tables(s)」エラーが出た時の対処について

(0)目次&概説 (1) エラー対応1:sqlalchemy.exc.ArgumentError  (1-1) 発生状況・エラーメッセージ   (1-1-1) エラーメッセージ   (1-1-2) エ …

PythonでSQLAlchemyを使ってOracleDBに接続する際に遭遇したエラーとその対処方法

本記事は次の記事の続編です。 (下記記事の手順を実行する際に遭遇したエラーについての備忘録) PythonでSQLAlchemyを使ってOracleDBに接続する方法 (0) 目次 (4) エラー対応 …

  • English (United States)
  • 日本語
S