Python
Beginner

#3.Webエンジニア1年選手がPythonを知る:クラス編

PythonのClassについて構文的な箇所を学んだので投稿します。

ver :Python3
OS :macOS
editor :visual Studio Code
DB :PostgreSQL

GitHub:https://github.com/shimura0714/Qiita

Class

Pythonにおけるクラスの構文は他の言語を大きな違いは無いと思います。

beginner.py
class Beginner (): #class名の定義

  def __init__(self, point): #コンストラクタ
    self.experience = point 

  def  getExperiencePoint(self): #インスタンスメソッド
    return self.experience

コンストラクタやクラスメソッドの第一引数にある"self"はC#で言うところの
"this"ですがPythonでは引数なしのクラスメソッドは定義できない模様、
"this"ですがPythonでは引数なしのクラスメソッドは定義できない模様、
故にクラスメソッドの第一引数に"self"を記述するのが慣例なのだとか。
故にインスタンスメソッドの第一引数に"self"を記述するのが慣例なのだとか。

※スタティックメソッドは引数なしで定義できるがクラス変数にアクセスができない。

継承

クラスといえば継承するもの?ということで

intermediate.py
import beginner #外部ファイルのインポート

class Intermediate(beginner.Beginner): #()内が継承の定義

  def getExperiencePoint(self) : # 親クラスメソッドのオーバライド
    return self.experience * 2

前述のBeginner(初級者)クラスを継承するIntermediate(中級者)クラスを作成してみました。
「初級者より中級者のほうが経験値が2倍だよ」というプログラムです。

簡単ではありますがPythonのクラスでした。

追記 アクセサ

beginner.py
  #getter
  @property
  def point(self):
    return self._point

  #setter
  @point.setter
  def point(self, value):
    self._point = value
 
  def  getExperiencePoint(self):
    return self.experience

上記のようにアクセサを定義できる、
それぞれは以下のようにアクセスできる。

intermediate.py
my.point = 1000
print(my.point)