Menu
Coddy logo textTech

クラスとオブジェクト

CoddyのPythonジャーニー「Object Oriented Programming」セクションの一部 — レッスン 3/64。

クラスとオブジェクトは異なる目的で使用されます。クラスは設計図であり、オブジェクトはその設計図から作成されるものです。

クラスの例を次に示します:

class Dog:
	# すべての犬で共有される
    species = "Canis familiaris"

これで、クラス名である Dog を使用して、Dog.species から直接クラス属性にアクセスできるようになります。

print(f"Class species: {Dog.species}")
# クラスの種: Canis familiaris

これは、特定のオブジェクトからではなく、クラス自体からデータにアクセスします。

それでは、オブジェクトでどのように機能するかを見てみましょう。Dogクラスからオブジェクトを作成します:

dog1 = Dog()
dog2 = Dog()

オブジェクトは、クラスには持てない個別の属性を持つことができます:

dog1.name = "Nicky"
dog1.breed = "Siberian Husky"

dog2.name = "Teemon" 
dog2.breed = "Shu'ali"

クラスとオブジェクトに何ができるかを比較してみましょう:

print(f"Object 1: {dog1.name} is a {dog1.breed}")
print(f"Object 2: {dog2.name} is a {dog2.breed}")
print(f"Both share class attribute: {Dog.species}")

出力:

Object 1: Nicky is a Siberian Husky
Object 2: Teemon is a Shu'ali
Both share class attribute: Canis familiaris

主な違い: クラス Dog はすべての犬に共通するものを定義し、一方、オブジェクト dog1dog2 は、固有のプロパティを持つ特定の個別の犬を表します。

challenge icon

チャレンジ

簡単

Studentクラスと2つの学生オブジェクトを作成するようにコードを完成させてください。それぞれの学生に異なる名前と成績を追加してください。

  • student.py: ここでStudentクラスを定義します。
  • driver.py: Studentクラスをインポートして使用するメインの実行ファイルです:

    Studentクラスと2つの学生オブジェクトを作成するようにコードを完成させてください。それぞれの学生に異なる名前と成績を追加してください。

    student1の名前は"Alice"、成績は"A"です。

    student2の名前は"Bob"、成績は"B"です。

チートシート

クラスは、共有される属性と動作を定義する設計図です。オブジェクトは、そのクラスから作成された、個別のプロパティを持つインスタンスです。

クラスを定義する:

class Dog:
    # クラス属性 - すべてのインスタンスで共有される
    species = "Canis familiaris"

クラス属性に直接アクセスする:

print(Dog.species)  # Canis familiaris

クラスからオブジェクトを作成する:

dog1 = Dog()
dog2 = Dog()

オブジェクトに個別の属性を追加する:

dog1.name = "Nicky"
dog1.breed = "Siberian Husky"

dog2.name = "Teemon"
dog2.breed = "Shu'ali"

オブジェクトは、個別の属性とクラス属性の両方にアクセスできます:

print(f"{dog1.name} is a {dog1.breed}")  # 個別の属性
print(f"Species: {Dog.species}")          # クラス属性

自分で試してみよう

# Studentクラスをインポートします
from student import Student

# TODO: 2つのstudentオブジェクトを作成します


# TODO: student1に属性を追加します


# TODO: student2に属性を追加します


# 生徒の情報を表示します
print(f"{student1.name} has grade {student1.grade} at {Student.school}")
print(f"{student2.name} has grade {student2.grade} at {Student.school}")
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Object Oriented Programmingのすべてのレッスン