おつかれさまです!記事を読んでくださりありがとうございます🌞
「クラスとインスタンスって結局なにが違うの?」「関数とメソッドって同じじゃないの?」
Pythonを勉強していると、
言葉の意味がハッキリしなくてモヤモヤする場面、ありませんか?
最初はコードを書いて動かすだけでも大変なのに、用語の違いまで気にしていたら混乱してしまいますよね。私自身も、「なんとなく意味はわかるけど、ちゃんと説明できない…」という状態が続いていました。
でも、ある程度しっかり用語を整理しておくと、ドキュメントを読んだり、他人のコードを理解したりするスピードがぐんと上がるようになったんです。
この記事では、Python初心者がつまずきやすい6つの用語ペアについて、コード例や具体的なイメージと一緒にわかりやすく解説していきます。
「なんとなくの理解」から一歩踏み出して、脱初心者していきましょう!
それでは、ゆっくりしていってください🐱
・Pythonを勉強しているけど、用語の違いがよくわからないと感じている方
・ドキュメントや参考書を読んでもピンとこないことが多い方
・初学者のうちに、基礎の言葉をしっかり整理しておきたいと思っている方
⭐️ それぞれの用語をコード例とセットで具体的にイメージできる
⭐️ 「何がどう違うのか」を説明できるレベルまで整理できる
⭐️ 実際にコードを書くとき、用語を正しく使えるようになる
クラス vs インスタンス
ざっくりイメージ!
クラス:設計図(テンプレート)
インスタンス:その設計図から作られた“実体”
たとえば「車の設計図」がクラス、実際に作られた「トヨタのカローラ」や「ホンダのシビック」などの具体的な車がインスタンスです。

このように、クラスは「型」、インスタンスは「その型の具体的なデータ」のように理解するといい感じです!
コード例を見てみよう!
# クラス(設計図)を定義
class Car:
def __init__(self, model):
self.model = model
def drive(self):
print(f"{self.model} が走っています")
# インスタンス(実体)を作る
my_car = Car("Corolla")
# インスタンスのメソッドを呼び出す
my_car.drive()
解説:
・class Car: がクラス定義(設計図)
・my_car = Car(“Corolla”) でインスタンスを生成(実体)
・my_car.drive() はインスタンスが持っているメソッドの呼び出し
関数 vs メソッド
ざっくりイメージ!
関数(function):単独で使える処理のまとまり
メソッド(method):クラスやオブジェクトにひもづいた関数
両方とも「何かの処理をまとめて再利用するもの」ですが、“単独で使うか”“オブジェクトに属するか”で違いがあります。
コード例を見てみよう!
▶️ 関数の例(単独で使う)
def greet(name):
print(f"こんにちは、{name}さん!")
greet("太郎")
▶️ メソッドの例(クラスの中にある)
class Greeter:
def __init__(self, name):
self.name = name
def greet(self):
print(f"こんにちは、{self.name}さん!")
greeter = Greeter("花子")
greeter.greet()
このように、“関数は独立型、メソッドはクラス内で使うもの”と考えると、整理しやすいです。
引数 vs パラメータ
ざっくりイメージ!
引数(argument):関数やメソッドを呼び出すときに“渡す値”
パラメータ(parameter):関数やメソッドを定義するときに“受け取る側”の名前
つまり、定義側に書くのがパラメータ、呼び出し側に渡すのが引数です。
コード例を見てみよう!
def greet(name): # ← name は「パラメータ」
print(f"こんにちは、{name}さん!")
greet("太郎") # ← "太郎" は「引数」
この例では次のような関係になります!
・name はパラメータ(受け取る側)
・”太郎”は引数(渡す値)
💡 補足
実務では「引数」という言葉の方がよく使われ、「パラメータ」はあまり明確に区別されないことも多いです。
ただ、初心者のうちにこの違いを押さえておくと、ドキュメントやエラーメッセージの理解がスムーズになります。
モジュール vs パッケージ
ざっくりイメージ!
モジュール(module):1つの .py ファイル(=Pythonコードのまとまり)
パッケージ(package):複数のモジュールをまとめたフォルダ(=モジュールのグループ)
どちらも「機能を整理して再利用しやすくする仕組み」ですが、粒度の違いがあります。
コード例を見てみよう!
▶️ モジュールの例
# math_utils.py というファイル
def add(a, b):
return a + b
def subtract(a, b):
return a - b
このmath_utils.pyを他のファイルで使いたい時、
# main.py
import math_utils
print(math_utils.add(3, 2)) # → 5
💡 このとき、math_utils はモジュールです。
▶️ パッケージの例
my_package/
├── __init__.py
├── math_utils.py
├── string_utils.py
このように複数のモジュールを1つのディレクトリにまとめ、
__init__.pyが入っていればそれはパッケージです。
from my_package import math_utils
print(math_utils.add(1, 2))
💡 my_package はパッケージ、中の math_utils はモジュールです。
「モジュール=ファイル」「パッケージ=フォルダ」と覚えると、イメージしやすいです。
💡 補足:import時の違い
・モジュール → import ファイル名(拡張子はいらない)
・パッケージ → from パッケージ名 import モジュール名
リスト vs タプル
ざっくりイメージ!
リスト(list):中身をあとから変更できる(mutable)
タプル(tuple):中身を変更できない(immutable)
どちらも「複数の値をまとめて扱えるデータ型」ですが、
変更できるかどうかに大きな違いがあります。
コード例を見てみよう!
▶️ リストの例(変更可能)
fruits = ["apple", "banana", "orange"]
fruits[1] = "grape" # banana → grape に変更
print(fruits) # → ['apple', 'grape', 'orange']
▶️ タプルの例(変更不可)
colors = ("red", "green", "blue")
colors[0] = "yellow" # エラーが出る!
💡 補足:どっちを使えばいいの?
・あとから中身を変更したい → リスト
・固定されたデータとして扱いたい(例:緯度経度、RGBなど)→ タプル
また、タプルはリストに比べて処理が若干高速で、意図的に“変更させない”ための設計にも使えます。
`is` vs `==`
ざっくりイメージ!
is :「同じオブジェクトか(同一の場所にあるか)」を比べる
== :「値が等しいか」を比べる
つまり、見た目が同じでも、中身が等しいだけなのか、まったく同じ“モノ”なのかによって使い分ける必要があります。
コード例を見てみよう!
▶️ is の例(同一性の比較)
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # → False(別々のリストとして作られている)
c = a
print(a is c) # → True(同じオブジェクトを参照している)
▶️ == の例(値の比較)
print(a == b) # → True(中身の値が同じ)
⚠️ 参照という概念が出てきましたが、これは変数にidが振られていて、
同じ値でもidが違うということが起こります!
💡 補足:特に注意すべき場面
・数値や文字列など、一部の小さなオブジェクトはPythonが自動的に同一のものを使いまわすため、is が True になることもあります。
・ただし、原則として「値の比較には ==、同一性の確認には is」と覚えておくと混乱しません。
まとめ:用語の違いがわかると、理解が“つながる”
Pythonを学び始めたばかりのころは、似たような用語がたくさん出てきて、
「これって何が違うの?」と混乱することも多いですよね。
今回紹介した6ペアの用語の意味や違いをちゃんと理解することで
コードの背景が見えてくるようになります。
すべてを一度で完璧に覚える必要はありません。実際にコードを書いたり読んだりする中で、
「あ、こういうことか」と少しずつ腑に落ちてくるはずです。
モヤモヤしたまま進むのではなく、こうして用語を整理しておくことが、確実なステップアップにつながります。
この記事が、あなたの「理解の引き出し」をひとつ増やすきっかけになればうれしいです!
ここまで読んでいただきありがとうございました!🎉
その業界で使われている言葉を理解することって大事ですね!
言葉で説明できるということはそれをきちんと理解しているとも言えます!
これからも初心者向けの知識や、実務での学びなどを発信していきます!
他の記事も読んでいただけると嬉しいです。😊
もっと綺麗なコードが書けるようになりたい!という方にはこちらがおすすめです👀
プログラミングにもっと挑戦したいという方にはAtcoderもおすすめです!
コメント