Pythonはオブジェクト指向?それとも手続き型?両方をサポートするマルチパラダイム言語の正体
結論から言うと、Pythonはオブジェクト指向と手続き型の両方のプログラミングスタイルに対応しています。Pythonは汎用プログラミング向けに設計された高水準言語であり、いわゆる「マルチパラダイム言語」に分類されます。
そのため、Pythonでは手続き型・オブジェクト指向・関数型のいずれのスタイルでも、プログラムやライブラリを記述することが可能です。厳密な意味での「関数型」と呼べるかは定義によりますが、Pythonには関数型言語的な特徴も一部備わっています。
オブジェクト指向としてのPython
クラス(Class)、カプセル化(Encapsulation)、ポリモーフィズム(Polymorphism)、継承(Inheritance)といったOOPの主要な概念がPythonでサポートされているため、Pythonは立派なオブジェクト指向プログラミング言語と言えます。
手続き型としてのPython
同様に、for文やwhile文などのループ処理や制御構造を組み合わせることで、Pythonで手続き型のプログラムを作成することもできます。
サンプルコード:長方形クラスの例
以下は、長方形の面積・周囲の長さ・コストを計算するクラスを使った、オブジェクト指向スタイルのPythonコード例です。
class Rectangle:
def __init__(self, length, breadth, unit_cost=0):
self.length = length
self.breadth = breadth
self.unit_cost = unit_cost
def get_perimeter(self):
return 2 * (self.length + self.breadth)
def get_area(self):
return self.length * self.breadth
def calculate_cost(self):
area = self.get_area()
return area * self.unit_cost
# 幅 = 120cm、長さ = 160cm、1cm²あたり2000ルピー
r = Rectangle(160, 120, 2000)
print("Area of Rectangle: %s cm^2" % (r.get_area()))
print("Cost of rectangular field: Rs. %s " % (r.calculate_cost()))
実行結果
Area of Rectangle: 19200 cm^2 Cost of rectangular field: Rs. 38400000
このように、Pythonは1つの言語でありながら複数のプログラミングパラダイムを柔軟に使い分けられる点が大きな魅力です。プロジェクトの規模や目的に応じて、最適なスタイルを選択して開発を進められます。
-
Python Kivy入門:ボタンアクション(イベント処理)の実装方法
Kivyは、マルチタッチアプリなど革新的なユーザーインターフェースを持つアプリケーションを迅速に開発するためのオープンソースのPythonライブラリです。Androidアプリだけでなく、デスクトップアプリケーションの開発にも広く活用されています。本記事では、Kivyにおいてボタンが押されたときにイベントを発生させる方法について解説します。実装例:ボタンとラベルの連動以下の例では、水平方向のBoxLayoutの中にボタンとラベルを1つずつ配置しています。まず、ボタンとラベルにそれぞれ初期テキストを設定します。その後、ボタンをクリックした際に発火するイベントを作成し、このイベントによってボタンとラ
-
Pythonの継承とは?単一継承と階層継承の基本をサンプルコードで解説
本記事では、Python 3.xにおける継承(インヘリタンス)とクラスの拡張方法について詳しく解説します。 継承とは、現実世界のモノや概念の関係性を自然に表現できる、オブジェクト指向プログラミングの中核となる仕組みです。継承を活用すると、次のようなメリットが得られます。 再利用性:すでに書いたコードを流用でき、重複を削減できる 推移性:クラス間の関係を連鎖的に引き継げる 開発速度の向上:ゼロから書かずに済むため、短期間で開発できる 保守性・拡張性:既存クラスを壊さずに機能を追加しやすい 継承の5つの種類 Pythonの継承は、その構造によって主に以下の5種類に分類されます。 単一継承(