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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

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

Q&A

解決済

3回答

6001閲覧

【Python】コンストラクタを用いたコードのエラー

TON-B

総合スコア21

Python

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

0グッド

0クリップ

投稿2018/06/25 11:54

編集2018/06/25 12:04

前提・実現したいこと

・Python
・コンストラクタを用いたコード書きの練習
・コンストラクタにif,formatを絡めて書いた場合のエラー

発生している問題・エラーメッセージ

<bound method Pokemon.date1 of <__main__.Pokemon object at 0x03283110>> <bound method Pokemon.date1 of <__main__.Pokemon object at 0x03283490>> <bound method Pokemon.date1 of <__main__.Pokemon object at 0x032834B0>>

該当のソースコード

python

1class Pokemon: 2 def __init__(self,name,power,defense): 3 self.name=name 4 self.power=power 5 self.defense=defense 6 7 def date1(self): 8 if self.power>self.defense: 9 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはこうげきがたかいみたいじゃな!".format(self.name,self.power,self.defense) 10 elif self.power==self.defense: 11 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはバランスがいいみたいじゃな!".format(self.name,self.power,self.defense) 12 else: 13 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはぼうぎょがたかいようじゃな!".format(self.name,self.power,self.defense) 14 15pokemon1=Pokemon("ピカチュウ",55,40) 16print(pokemon1.date1) 17 18pokemon2=Pokemon("ミュウ",100,100) 19print(pokemon2.date1) 20 21pokemon3=Pokemon("カメックス",83,100) 22print(pokemon3.date1) 23

試したこと

python

1class Pokemon: 2 def __init__(self,name,human): 3 self.name=name 4 self.human=human 5 6 def goodman(self): 7 return self.name+"と"+self.human 8 9character1=Pokemon("ピカチュウ","サトシ") 10print(character1.goodman()) 11 12#上記のように__init__を用いたコードではエラーは発生しない。 13#しかし、if,formatを絡めて書いた場合にエラーが発生してしまう。 14

目標物

ピカチュウのこうげきは55、ぼうぎょは40じゃ! このポケモンはこうげきがたかいみたいじゃな!
ミュウのこうげきは100、ぼうぎょは100じゃ! このポケモンはバランスがいいみたいじゃな!
カメックスのこうげきは83、ぼうぎょは100じゃ! このポケモンはぼうぎょがたかいようじゃな!

の出力。

補足

試したことで書いたように、シンプルな形式で「initで複数の引数を用いる」ことを理解しました。しかし、if,formatを絡めて書いた場合にエラーが発生してしまいます。
コードのどの部分に問題があるのか教えていただきたいです。

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

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

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

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

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

quickquip

2018/06/25 11:59

問題は確かにある(意図通りには動かない)コードでしょうが、SyntaxError: invalid syntaxにはならないです。貼り付けたコードが手元のものと一致しているか再度確認してください。
guest

回答3

0

@propertyでメンバー変数みたいにしてしまう方法もありますよ。この修飾子つけるだけで元のコード動きますよ。ご参考までに。

python

1class Pokemon: 2 def __init__(self,name,power,defense): 3 ... 4 @property 5 def date1(self): 6 ...

投稿2018/06/25 12:47

編集2018/06/26 23:37
tachikoma

総合スコア3601

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

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

TON-B

2018/06/26 03:16

ありがとうございます。 こちらのやり方も試してみます。
guest

0

ベストアンサー

エラーではありません。date1はメソッドのオブジェクトで、それがそのまま見えているだけです。()を付けてあげることでメソッド呼び出しになります。

python

1class Pokemon: 2 def __init__(self,name,power,defense): 3 self.name=name 4 self.power=power 5 self.defense=defense 6 7 def date1(self): 8 if self.power>self.defense: 9 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはこうげきがたかいみたいじゃな!".format(self.name,self.power,self.defense) 10 elif self.power==self.defense: 11 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはバランスがいいみたいじゃな!".format(self.name,self.power,self.defense) 12 else: 13 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはぼうぎょがたかいようじゃな!".format(self.name,self.power,self.defense) 14 15pokemon1=Pokemon("ピカチュウ",55,40) 16print(pokemon1.date1()) 17 18pokemon2=Pokemon("ミュウ",100,100) 19print(pokemon2.date1()) 20 21pokemon3=Pokemon("カメックス",83,100) 22print(pokemon3.date1())

「データ」ならdata1では。

投稿2018/06/25 12:15

hayataka2049

総合スコア30933

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

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

TON-B

2018/06/26 03:15

ありがとうございました。 単語につきましてはお恥ずかしい限りです。
guest

0

python

1 2class Pokemon: 3 def __init__(self,name,power,defense): 4 self.name=name 5 self.power=power 6 self.defense=defense 7 8 def date1(self): 9 if self.power>self.defense: 10 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはこうげきがたかいみたいじゃな!".format(self.name,self.power,self.defense) 11 elif self.power==self.defense: 12 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはバランスがいいみたいじゃな!".format(self.name,self.power,self.defense) 13 else: 14 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはぼうぎょがたかいようじゃな!".format(self.name,self.power,self.defense) 15 16pokemon1=Pokemon("ピカチュウ",55,40) 17print(pokemon1.date1()) 18 19pokemon2=Pokemon("ミュウ",100,100) 20print(pokemon2.date1()) 21 22pokemon3=Pokemon("カメックス",83,100) 23print(pokemon3.date1()) 24 25""" 26ピカチュウのこうげきは55、ぼうぎょは40じゃ! このポケモンはこうげきがたかいみたいじゃな! 27ミュウのこうげきは100、ぼうぎょは100じゃ! このポケモンはバランスがいいみたいじゃな! 28カメックスのこうげきは83、ぼうぎょは100じゃ! このポケモンはぼうぎょがたかいようじゃな! 29"""

投稿2018/06/25 12:06

wakame

総合スコア1170

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問