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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Python

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

Q&A

解決済

4回答

615閲覧

Pythonのクラス作成について。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Python

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

0グッド

0クリップ

投稿2021/06/04 15:26

編集2021/06/04 16:37

テキストの通りにPythonのクラスを作成したのですが、1文字も間違えずに打ったのに、実行するとエラーになることがしばしばあります。

エラーの文はAttribte Errorや、Nomethod Error などです。

この現象はRubyでも起こるのですが、なぜ間違ってもないのにエラーになるのでしょうか?

初歩の初歩のリスト作成など、タプルなどはエラーにならず行えたのですが。。。

少し長めのプログラムを入力すると、しばしばエラーになるという現象が起こります。

これにはどんな可能性が考えられますか?

Python

1 2class Spam: 3 val = 100 4 def ham(self): 5 self.egg('call method') 6 7 def egg(self, msg): 8 print("{0}".format(msg)) 9 print(("{0}".format(self.val))) 10 11spam = Spam() 12spam.ham() 13

Ruby

1module SampleModule 2 def Sample_method 3 p 'call sample_method.' 4 end 5end 6 7class SampleClass 8 extend SampleModule 9end 10 11SmpleClass.sample_method

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

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

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

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

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

yh1224

2021/06/04 15:31

具体的なコードを提示しましょう。 何かが間違っているはずとしか言えません。。
guest

回答4

0

こんばんは。

問題文読ませていただきました。

おそらく、インデントの問題ですね。以下をご確認くださいませ〜????‍♂️

python

1class Spam: 2 val = 100 3 4 def ham(self): 5 self.egg('call method') 6 7 def egg(self, msg): 8 print("{0}".format(msg)) 9 print(("{0}".format(self.val))) 10 11spam = Spam() 12spam.ham()

投稿2021/06/05 10:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/06/10 15:29

インデントミスでした。 テキストのまんま写していたので、ミスが起きたのだと思われます。 でも、無事作動しました! 回答ありがとうこざいます!
退会済みユーザー

退会済みユーザー

2021/06/10 20:38

いえいえ。 また困ったこととかありましたら、気軽にご相談ください。 最後に素朴な疑問なのですが、差し支えなければどのようにteratailを始められたのか教えていただくことは可能でしょうか?????‍♂️
退会済みユーザー

退会済みユーザー

2021/06/18 09:36

回答遅れてすみません。 メッセージに気付きませんでした。 youtubeでプログラマーのyoutuberがおすすめしていたので初めてみました!
退会済みユーザー

退会済みユーザー

2021/06/18 10:33

youtubeからteratailを始められたんですね。 貴重なご意見ありがとうございます。????‍♂️
guest

0

pythonはdef egg()のインデントがおかしいです。
正しくは以下。
rubyはわかりません。

python

1class Spam: 2 val = 100 3 def ham(self): 4 self.egg('call method') 5 6 def egg(self, msg): 7 print("{0}".format(msg)) 8 print(("{0}".format(self.val))) 9 10spam = Spam() 11spam.ham()

追記というか訂正

もしdef egg()を関数内関数(そんな呼び方だったっけ?)でdef ham()から呼び出したいのでしたら以下のようになります。

python

1class Spam: 2 val = 100 3 def ham(self): 4 def egg(msg): 5 print("{0}".format(msg)) 6 print(("{0}".format(self.val))) 7 egg('call method') 8 9spam = Spam() 10spam.ham()

投稿2021/06/04 16:51

編集2021/06/04 17:03
udon-ken

総合スコア657

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

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

退会済みユーザー

退会済みユーザー

2021/06/04 17:10

回答ありがとうございます! 無事、実行されました!
退会済みユーザー

退会済みユーザー

2021/06/04 17:11

ありがとうございます! そのような呼び出し方もあるんですね! 参考になりました(__)
guest

0

ベストアンサー

まず改行されないのは書式が正しくないせいなので、がんばって書き方を覚えましょう!

コードが以下のとおりだとすると、間違いだらけです。(インデントだけ直しました。)

python

1class Spam: 2 Val = 100 3 4 def ham(self): 5 self.egg('call method') 6 7 def egg(self.msg): 8 print("{0}".format(msg)) 9 print(({0}".format(self.val))) 10 spam = Spam() 11 spam.ham()
  1. が全角文字になっていますが、半角の = が正しいです。
  2. def egg(self.msg): は ``def egg(self, msg):` が正しいです。(ピリオドでなくカンマ)
  3. print(({0}".format(self.val)))print("{0}".format(self.Val)) が正しいです。 (括弧、クォートがおかしい、val でなく Val)

エラーメッセージが出ているのであれば、どこに間違いがあるかは書かれているはずです(初心者には分かりにくい場合もありますが)。実際にどういうコードで、どういうエラーが出力されたかを書けば回答もすぐに得られると思います。

「1文字も間違えずに打った」「間違ってもない」「ちゃんとした」「ミスはない」といった思い込みは捨て、エラーメッセージと向き合いましょう!

投稿2021/06/04 16:36

yh1224

総合スコア653

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

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

退会済みユーザー

退会済みユーザー

2021/06/04 16:45

文の修正をしました。スマホで打っていたので、半角のところを全角にしてしまっていたのかもしれません。 PythonとRubyの時に、エラーメッセージが出て実行されなかった、コードをvsコードからコピペしたので、もう一度どこがおかしいか教えてください。お願いします。 あと、Pythonのこのコードを打つと、AttributeErrorと出て、Rubyのこのコードを打つと、11行目がNameErrorと出て、Do you mean? Sample Class と表示されます。
yh1224

2021/06/04 16:51

Python に関しては def egg のインデントがずれているのだと思います。 これだと ham 関数の中で定義されていることになるので、self.egg() では呼ぶことができません。
yh1224

2021/06/04 16:54

Ruby はスペルミスではないでしょうか? ×SmpleClass.sample_method ○SampleClass.Sample_method
退会済みユーザー

退会済みユーザー

2021/06/04 17:09

PythonのほうもRubyのほうも、言われたとおりに修正したら、無事実行されました! ありがとうございます。今度、エラーが発生した時は、どこがおかしいか、隅のすみまで確認したいと思います。 回答ありがとうございました。
guest

0

タイピングミスの場合がほとんどだと思います。

投稿2021/06/04 15:50

TaroToyotomi

総合スコア1430

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

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

退会済みユーザー

退会済みユーザー

2021/06/10 15:30

インデントミスでした ちゃんと見なきゃダメですね 次からは気をつけます 回答ありがとうこざいました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問