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

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

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

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

Q&A

解決済

2回答

707閲覧

b.super_say()の出力にNoneが含まれるのはなぜでしょうか。

masa813

総合スコア2

Python

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

0グッド

0クリップ

投稿2020/06/13 11:44

質問

b.super_say()の出力にNoneが含まれるのはなぜでしょうか。
明示的に戻り値を定義しない関数はNoneを返すということは知っていますが、通常コンソールで実行するとNoneが表示されることはないという認識です。

Python

1class A: 2 def say(self): 3 print("I am A") 4 5class B(A): 6 def super_say(self): 7 print(super(B, self).say()) 8 9a = A() 10a.say() 11-> I am A 12 13b = B() 14b.super_say() 15-> I am A 16-> None

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

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

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

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

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

guest

回答2

0

def say(self):

print("I am A")

sayメソッドの戻り値はNoneです

print(super(B, self).say())

super(B, self).say()を実行したあと、その戻り値をprintしてますね

投稿2020/06/13 14:47

y_waiwai

総合スコア87774

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

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

masa813

2020/06/13 15:43

回答ありがとうございます。 言われてみれば当たり前の話でした。 しばらく考えても分からずもやもやしていたので助かりました。
guest

0

ベストアンサー

b.super_say()の出力にNoneが含まれるのはなぜでしょうか。

print(super(B, self).say())によって
super(B, self).say()戻り値を出力しているからです。

Python

1def super_say(self): 2 ret = B, self).say() 3 print(ret)

と分解してやると理解しやすいかと思います。

投稿2020/06/13 12:15

can110

総合スコア38266

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

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

masa813

2020/06/13 15:43

回答ありがとうございます。 言われてみれば当たり前の話でした。 しばらく考えても分からずもやもやしていたので助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問