アプリ版:「スタンプのみでお礼する」機能のリリースについて

あるサイトで
class Cat:
family = '猫'

def say(self):
print('にゃー')

def growl(self):
print('ウー')

tora = Cat()
tora.family
tora.say()
tora.growl()

としたとき

にゃー
ウー

とでるとしているが、僕ので実行すると 猫 だけはでないがどうして

A 回答 (3件)

こういう事だろ?(添付写真を参照)



でもぶっちゃけ、コード例が良くない。
いきなりクラス変数を使う、とかどーしよーもねぇ例だと思う。
また、他の人も書いてるけど、結局printを入れるかどうか、って問題になってて、cat.familyがprintを要さないのなら、メソッドもprintを含むべきではない。
returnすべきだ。

# こんなカンジ
class Cat:
 def __init__(self):
  self.family = '猫'

 def say(self):
  return 'にゃー'

 def growl(self):
  return 'ウー'

意図が無いのに「対称性が崩れてる」ってのはあまりよいスタイルじゃないと思う。

なお、

> あるサイトで

と言うのなら、その「あるサイト」で質問すべきだと思うな。
マトモなサイトなら、メールを送れば答えてくれます。
そっちの方が確実、です。
「パイソンのクラスについて」の回答画像3
    • good
    • 0

詳細は「Python 対話モード」で検索。




Pythonには「対話モード」というものがあります。
ほとんどファイルに書いて実行するのと同じですが、一部違いがあります。

その違いの一つに「コマンド終了時に、値を返すようなものであればその値を出力する」というものです。(Noneの場合は何も出力されません)

例えば、対話モードで
2 * 3
と入力すると
6
と出力されます。これは
print(2 * 3)
と(ほぼ)同じです。
# もうすこし正確にすると
ret = 2 * 3
if not ret is None:
   print(repr(ret))
とほぼ同等


tora.family

・ファイルで実行する場合: 特に変化は無い
・対話モードの場合: print(tora.family) とほぼ同じ
となります。


サイトや書籍を見る際は、対話モードかそうでないかを見極めるようにしましょう。
    • good
    • 1

print()を呼んでいないからですね。

    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!