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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

304閲覧

pythonの出力結果について教えてください。

ryo_15130724

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2019/05/22 07:49

以下のソースの出力結果について教えてください。

python

1class Shape(): 2 def what_am_i(self): 3 print("I am a shape.") 4 5class Square(Shape): 6 square_list = [] 7 def __init__(self, s1): 8 self.s1 = s1 9 self.square_list.append(self.s1) 10 11 def calculate_perimeter(self): 12 return self.s1 * 4 13 14 def what_am_i(self): 15 super().what_am_i() 16 print("I am a Square.") 17 18a_square = Square(29) 19print(a_square.square_list) 20print(a_square.what_am_i()) 21another_square = Square(93) 22print(another_square.square_list) 23print(another_square.what_am_i()) 24

これに対する出力結果は以下です。

python

1[29] 2I am a shape. 3I am a Square. 4None 5[29, 93] 6I am a shape. 7I am a Square. 8None

print(a_square.what_am_i()),print(another_square.what_am_i())でNoneが出力結果にでる理由がわかりません。
ShapeクラスとSquareクラスのwhat_am_iが処理されるだけではないのでしょうか?

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

print(a_square.what_am_i())a_square.what_am_i()を実行し、その戻り値を出力するというコードです。
ではwhat_am_i()の戻り値は何でしょうか?

Python

1def what_am_i(self): 2 super().what_am_i() 3 print("I am a Square.")

のようにreturnがないので何も戻り値を返していませんね。
このように関数が終了するところにreturnがないと、Noneを返すと仕様で決まっています。
よってprint(a_square.what_am_i())の出力結果はNoneとなります。

投稿2019/05/22 07:56

can110

総合スコア38266

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

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

ryo_15130724

2019/05/22 07:57

ご回答いただきましてありがとうございます。 returnのことを失念しておりました。
guest

0

ベストアンサー

print(another_square.what_am_i())

とはつまり、

python

1res = another_square.what_am_i() 2print(res)

しているようなものですよね? what_am_i() は何もreturnしないため、resにNoneが入り、それが出力されています。

投稿2019/05/22 07:53

tetsunosuke

総合スコア1292

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

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

ryo_15130724

2019/05/22 07:55

ご回答ありがとうございました。 とても助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問