質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

493閲覧

Class 子クラスで親クラスのプロパティを定義する方法

catwalk

総合スコア13

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/11/13 11:47

実現したいこと

Pyhtonでクラスの勉強がてらにポケモンを作っているのですが、子クラスにて親クラスのプロパティの定義のやり方がわかりません。

「pokemon_category」を子クラスにて"イーブイ"と定義したいのですが、superの使い方が違うようで引数が足りないとエラーになります。
どのように修正すれば親クラスのプロパティを子クラスにて定義し、インスタンスできるのかをご教授いただければと思います。

また厚かましいお願いになりますが、参考サイトなどあれば合わせて教えていただけると助かります。

該当のソースコード

Python

1class pokemon: 2 3 #初期化 4 def __init__(self,name, pokemon_category, category, attribute, height, weight, propertys, hp, attack, defense, special_attack, special_defense, rapidity, skil1, skil2, skil3, skil4): 5 6 #名前 7 self.name = name 8 9 #ポケモンの種類 10 self.pokemon_category = pokemon_category 11 12 #分類 13 self.category = category 14 15 #属性 16 self.attribute = attribute 17 18 #高さ 19 self.height = height 20 21 #重さ 22 self.weight = weight 23 24 #特性 25 self.propertys = propertys 26 27 #HP 28 self.hp = hp 29 30 #こうげき 31 self.attack = attack 32 33 #ぼうぎょう 34 self.defense = defense 35 36 #とくこう 37 self.special_attack = special_attack 38 39 #とくぼう 40 self.special_defense = special_defense 41 42 #すばやさ 43 self.rapidity = rapidity 44 45 #技1 46 self.skil1 = skil1 47 48 #技2 49 self.skil2 = skil2 50 51 #技3 52 self.skil3 = skil3 53 54 #技4 55 self.skil4 = skil4 56 57 #わざ1 58 def attack1(self): 59 print("{0}の{1}!",format(self.name,self.skil1)) 60 61 #わざ2 62 def attack2(self): 63 print("{0}の{1}!",format(self.name,self.skil2)) 64 65 #わざ3 66 def attack3(self): 67 print("{0}の{1}!",format(self.name,self.skil3)) 68 69 #わざ4 70 def attack4(self): 71 print("{0}の{1}!",format(self.name,self.skil4)) 72 73 74#子クラス 75class eevee(pokemon): 76 def __init__(self, name, category, attribute, height, weight, propertys, hp, attack, defense, special_attack, special_defense, rapidity, skil1, skil2, skil3, skil4): 77 super().__init__(name, pokemon_category, category, attribute, height, weight, propertys, hp, attack, defense, special_attack, special_defense, rapidity, skil1, skil2, skil3, skil4) 78 self.pokemon_category = "イーブイ" 79 80 81 82 83eve = eevee("ブイ太郎","進化ポケモン","ノーマル","0.3m","6.5kg","にげあし",4,4,3,3,4,4,"たいあたり","でんこうせっか","あなをほる","にどげり") 84print(eve.pokemon_category) 85

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

somak

2022/11/13 12:04

子クラスの__init__の仮引数にpokemon_categoryがないからでは?
BeatStar

2022/11/13 22:43

とりあえず、『エラーメッセージは省略せずに提示しましょう』です。 エラーメッセージはインタプリタ等からのメッセージです。 メッセージにヒントが隠されています。なので省略しないでください。
guest

回答1

0

ベストアンサー

「pokemon_category」を子クラスにて"イーブイ"と定義したい

1.子クラスの __init__ 内で pokemon_category の内容を指定し、それを親クラスの __init__ の pokemon_category に渡します。

python

12#子クラス 3class eevee(pokemon): 4 def __init__(self, name, category, attribute, height, weight, propertys, hp, attack, defense, special_attack, special_defense, rapidity, skil1, skil2, skil3, skil4): 5 pokemon_category = "イーブイ" 6 super().__init__(name, pokemon_category, category, attribute, height, weight, propertys, hp, attack, defense, special_attack, special_defense, rapidity, skil1, skil2, skil3, skil4) 7 8

※ または、pokemon_category をクラス変数として定義する方法もあるかもしれませんが、pokemon_categoryが各クラスごとに共通であるのかどうか、また、継承元の pokemon クラスで pokemon_category の値はどうあるべきなのかが質問には一切記載されていないため、割愛します

投稿2022/11/13 12:00

編集2022/11/13 12:19
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問