Python コーディング問題 第24回『イニシャライザ・クラス変数・クラスメソッド』

プログラミング上達のコツは学習初期段階でとにかく手を動かしてコーディングすることです。
本シリーズでは Python の初学者に向けたコーディング問題を出題します。
今回は クラスのイニシャライザや、クラス変数・クラスメソッド について学習します。コーディング指示に従ってコーディングしてみましょう!

目次

学習の進め方

  1. プログラム説明および目的を確認し、どのようなプログラムで何を学ぶかイメージしましょう。
  2. コーディング指示に従ってコーディングをします。
    もし分からなければ、コード例を確認しても良いです。
  3. 自分の出力結果と出力結果例を比較してみましょう。
  4. コード例を確認し、自分のコードと比較してみましょう。
    コード例は「あくまでも例」なので完全に一致する必要はありません。
  5. 最終的にはコーディング指示だけでコーディングできるよう、繰り返し練習しましょう。

Python コーディング問題1: 動物情報管理システム

プログラム説明

このプログラムは、動物の基本情報を管理します。ユーザーは動物の名前と種類を入力し、各動物の情報を表示します。

目的

このプログラムを通じて、学習者はクラスの基本的な定義方法、イニシャライザ(コンストラクタ)の使い方、パスカルケースおよびスネークケースの命名規則、メソッドの定義と利用方法、リストを用いた複数のインスタンスの管理方法を学びます。

コーディング指示

新しいPythonファイル animal_info.py を作成する

  1. 任意のエディタを開き、新しいファイルを作成します。
  2. ファイル名を animal_info.py として保存します。

動物を表現する Animal クラスを定義する

  1. Animal クラスを作成し、以下のメソッドを定義します:
  2. __init__ メソッド:名前と種類を引数に取り、インスタンス変数に設定します。
  3. print_name メソッド:動物の名前を表示します。
  4. print_species メソッド:動物の種類を表示します。

メインプログラムを作成する

  1. 空のリスト animals を作成します。
  2. for ループを使用して、3匹の動物の情報を入力させ、それぞれのインスタンスを animals リストに追加します。
    • ループ内で、input 関数を使用して名前と種類を入力させます。
    • 入力された名前と種類を使って Animal クラスのインスタンスを生成します。
    • append メソッドを使って生成したインスタンスを animals リストに追加します。
  3. ループを使用して、リスト内の各動物の情報を表示します。

Python コード例

タップしてコード例を表示
class Animal:
    """動物情報を管理するクラス"""

    def __init__(self, name, species):
        self.name = name
        self.species = species

    # 動物の名前を表示するメソッド
    def print_name(self):
        print(f"名前: {self.name}")

    # 動物の種類を表示するメソッド
    def print_species(self):
        print(f"種類: {self.species}")

# メインプログラム
# 空のリストを作成
animals = []

# 3匹の動物の情報を入力してリストに追加
for i in range(3):
    # 名前の入力
    name = input(f"{i+1}匹目の動物の名前を入力してください: ")
    # 種類の入力
    species = input(f"{i+1}匹目の動物の種類を入力してください: ")
    # Animalクラスのインスタンスを生成してリストに追加
    new_animal = Animal(name, species)
    animals.append(new_animal)  # appendメソッドを使用してリストに追加

# 動物の情報を表示
for animal in animals:
    animal.print_name()
    animal.print_species()

Python コーディング問題2: 書籍情報管理システム

プログラム説明

このプログラムは、書籍の基本情報を管理します。ユーザーは書籍のタイトルと著者を入力し、各書籍の情報を表示します。

目的

このプログラムを通じて、学習者はクラスの基本的な定義方法、イニシャライザ(コンストラクタ)の使い方、パスカルケースおよびスネークケースの命名規則、メソッドの定義と利用方法、リストを用いた複数のインスタンスの管理方法を学びます。

コーディング指示

新しい Python ファイル book_info.py を作成する

  1. 任意のエディタを開き、新しいファイルを作成します。
  2. ファイル名を book_info.py として保存します。

書籍を表現する Book クラスを定義する

  1. Book クラスを作成し、以下のメソッドを定義します:
  2. __init__ メソッド:タイトルと著者を引数に取り、インスタンス変数に設定します。
  3. print_title メソッド:書籍のタイトルを表示します。
  4. print_author メソッド:書籍の著者を表示します。

メインプログラムを作成する

  1. 空のリスト books を作成します。
  2. for ループを使用して、3冊の書籍の情報を入力させ、それぞれのインスタンスを books リストに追加します。
  3. ループ内で、input 関数を使用してタイトルと著者を入力させます。
  4. 入力されたタイトルと著者を使って Book クラスのインスタンスを生成します。
  5. append メソッドを使って生成したインスタンスを books リストに追加します。
  6. ループを使用して、リスト内の各書籍の情報を表示します。

Python コード例

タップしてコード例を表示
class Book:
    """書籍情報を管理するクラス"""

    def __init__(self, title, author):
        self.title = title
        self.author = author

    # 書籍のタイトルを表示するメソッド
    def print_title(self):
        print(f"タイトル: {self.title}")

    # 書籍の著者を表示するメソッド
    def print_author(self):
        print(f"著者: {self.author}")

# メインプログラム
# 空のリストを作成
books = []

# 3冊の書籍の情報を入力してリストに追加
for i in range(3):
    # タイトルの入力
    title = input(f"{i+1}冊目の書籍のタイトルを入力してください: ")
    # 著者の入力
    author = input(f"{i+1}冊目の書籍の著者を入力してください: ")
    # Bookクラスのインスタンスを生成してリストに追加
    new_book = Book(title, author)
    books.append(new_book)  # appendメソッドを使用してリストに追加

# 書籍の情報を表示
for book in books:
    book.print_title()
    book.print_author()

Python コーディング問題3: 映画情報管理システム

プログラム説明

このプログラムは、映画の基本情報を管理します。映画の本数をクラス変数で保持し、映画が追加されるたびに本数を更新します。また、クラスメソッドを使って現在の映画の本数を表示します。

目的

このプログラムを通じて、学習者はクラス変数、クラスメソッド、インスタンス変数、インスタンスメソッドの定義と使用方法を学びます。

コーディング指示

新しい Python ファイル movie_management.py を作成する

  1. 任意のエディタを開き、新しいファイルを作成します。
  2. ファイル名を movie_management.py として保存します。

映画を表現する Movie クラスを定義する

  1. Movie クラスを作成し、以下のメソッドを定義します:
  2. __init__ メソッド:タイトルと監督を引数に取り、インスタンス変数に設定します。また、クラス変数 counter を1増やします。
  3. print_title メソッド:映画のタイトルを表示します。
  4. print_director メソッド:映画の監督を表示します。
  5. check_num クラスメソッド:現在の映画の本数を表示します。

メインプログラムを作成する

  1. 空のリスト movies を作成します。
  2. for ループを使用して、3本の映画の情報を入力させ、それぞれのインスタンスを movies リストに追加します。
  3. ループ内で、input 関数を使用してタイトルと監督を入力させます。
  4. 入力されたタイトルと監督を使って Movie クラスのインスタンスを生成します。
  5. append メソッドを使って生成したインスタンスを movies リストに追加します。
  6. ループを使用して、リスト内の各映画の情報を表示します。
  7. Movie.check_num() を呼び出して現在の映画の本数を表示します。

Python コード例

タップしてコード例を表示
class Movie:
    """映画情報を管理するクラス"""

    # クラス変数として映画の本数をカウントする変数
    counter = 0

    def __init__(self, title, director):
        # インスタンス変数にタイトルと監督を設定
        self.title = title
        self.director = director
        # クラス変数をインクリメント
        Movie.counter += 1

    # 映画のタイトルを表示するメソッド
    def print_title(self):
        print(f"タイトル: {self.title}")

    # 映画の監督を表示するメソッド
    def print_director(self):
        print(f"監督: {self.director}")

    # 現在の映画の本数を表示するクラスメソッド
    @classmethod
    def check_num(cls):
        print(f"現在の映画の本数: {cls.counter}本")

# メインプログラム
# 空のリストを作成
movies = []

# 3本の映画の情報を入力してリストに追加
for i in range(3):
    # タイトルの入力
    title = input(f"{i+1}本目の映画のタイトルを入力してください: ")
    # 監督の入力
    director = input(f"{i+1}本目の映画の監督を入力してください: ")
    # Movieクラスのインスタンスを生成してリストに追加
    new_movie = Movie(title, director)
    movies.append(new_movie)  # appendメソッドを使用してリストに追加

# 映画の情報を表示
for movie in movies:
    movie.print_title()
    movie.print_director()

# 現在の映画の本数を表示
Movie.check_num()

Python コーディング問題4: ゲームキャラクター管理システム

プログラム説明

このプログラムは、ゲームキャラクターの情報を管理します。キャラクターの数をクラス変数で保持し、キャラクターが追加されるたびに数を更新します。また、クラスメソッドを使って現在のキャラクターの数を表示します。

目的

このプログラムを通じて、学習者はクラス変数、クラスメソッド、インスタンス変数、インスタンスメソッドの定義と使用方法を学びます。

コーディング指示

新しいPythonファイル character_management.py を作成する

  1. 任意のエディタを開き、新しいファイルを作成します。
  2. ファイル名を character_management.py として保存します。

キャラクターを表現する Character クラスを定義する

  1. Character クラスを作成し、以下のメソッドを定義します:
  2. __init__ メソッド:名前と役割を引数に取り、インスタンス変数に設定します。また、クラス変数 counter を1増やします。
  3. print_name メソッド:キャラクターの名前を表示します。
  4. print_role メソッド:キャラクターの役割を表示します。
  5. check_num クラスメソッド:現在のキャラクターの数を表示します。

メインプログラムを作成する

  1. 空のリスト characters を作成します。
  2. for ループを使用して、3人のキャラクターの情報を入力させ、それぞれのインスタンスを characters リストに追加します。
  3. ループ内で、input 関数を使用して名前と役割を入力させます。
  4. 入力された名前と役割を使って Character クラスのインスタンスを生成します。
  5. append メソッドを使って生成したインスタンスを characters リストに追加します。
  6. ループを使用して、リスト内の各キャラクターの情報を表示します。
  7. Character.check_num() を呼び出して現在のキャラクターの数を表示します。

Python コード例

タップしてコード例を表示
class Character:
    """ゲームキャラクター情報を管理するクラス"""

    # クラス変数としてキャラクターの数をカウントする変数
    counter = 0

    def __init__(self, name, role):
        # インスタンス変数に名前と役割を設定
        self.name = name
        self.role = role
        # クラス変数をインクリメント
        Character.counter += 1

    # キャラクターの名前を表示するメソッド
    def print_name(self):
        print(f"名前: {self.name}")

    # キャラクターの役割を表示するメソッド
    def print_role(self):
        print(f"役割: {self.role}")

    # 現在のキャラクターの数を表示するクラスメソッド
    @classmethod
    def check_num(cls):
        print(f"現在のキャラクターの数: {cls.counter}人")

# メインプログラム
# 空のリストを作成
characters = []

# 3人のキャラクターの情報を入力してリストに追加
for i in range(3):
    # 名前の入力
    name = input(f"{i+1}人目のキャラクターの名前を入力してください: ")
    # 役割の入力
    role = input(f"{i+1}人目のキャラクターの役割を入力してください: ")
    # Characterクラスのインスタンスを生成してリストに追加
    new_character = Character(name, role)
    characters.append(new_character)  # appendメソッドを使用してリストに追加

# キャラクターの情報を表示
for character in characters:
    character.print_name()
    character.print_role()

# 現在のキャラクターの数を表示
Character.check_num()
(Visited 3 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

職業訓練校 エヌ・キャリア・アカデミー 講師の田中です。
主にPythonやC言語を担当しています。
人気の言語であるPythonの多様な活用方法と、その魅力をお伝えする記事を中心に発信していきます。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次