クラスとオブジェクト
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 はすべての犬に共通するものを定義し、一方、オブジェクト dog1 と dog2 は、固有のプロパティを持つ特定の個別の犬を表します。
チャレンジ
簡単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}")このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。