1

GNU ベースの OS (Precise Puppy 5.4) に付属するすべてのプログラムを使用しています。

説明

  • まず、クラスを作成します。
  • そのクラス内でメソッドを定義します
  • このメソッドは一般的な名前の引数を取ります
  • 内部if-elif-elseには、引数値で機能するステートメントがあります
  • ifステートメントは、返す文字列を決定します

クラスの外では、 variable に渡されるユーザー入力を求めますuserinput

次に、引数としてメソッドを呼び出し、userinput戻り値を変数 name に割り当てますvariable。それから私は印刷しますvariable

いくつかのメモ

まず、同じ効果を得る方法が他にもあることを理解しています。私がそれらの 1 つを使用しない理由は、かなり大規模なテキスト アドベンチャーを作成しており、非常に多くの決定を行い、非常に多くの変数を割り当てる必要があるためです。

クラスをカテゴリとして使用し、メソッドを特定の領域として使用して、ゲームのさまざまなセクション (つまり、 という名前のクラスと 、 、 などのメソッド) を分類すると、コードの操作がはるかに簡単になりますPlayerstatsinventorygold

class.functionこのエラーは、 を呼び出したときにクラスに戻り値がないという事実に関連していることがわかります。ただし、メソッドはクラス内で呼び出されないため、メソッドから値をクラス内ではなくメソッド外で返す方法はありません。

class classname () :
    def methodname (value) :
        if value == 1 :
            return "Hello World"
        else :
            return "Goodbye World!"
userinput = raw_input("Enter the number [1]\n")
variable = classname.methodname (userinput)
print (variable)

コンソール出力

Enter the number [1]        (this is the prompt)
1                           (this is the user input)

(now the error)

Traceback (most recent call last):
    File "filename.py", line 8, in <module>
        variable = (classname.methodname (userinput))
TypeError: unbound method methodname() must be called with
classname instance as first argument (got classobj instance
instead)

この問題は解決されました。問題は単純な構文の問題でした。これは、ソリューションの固定コード Props to max と、この投稿をフォーマットするための Lev Levitsky です。^.^

class classname () :
    def methodname (self, value) :
        if value == "1" :
            return "Hello World"
        else :
            return "Goodbye World!"
userinput = raw_input("Enter the number [1]\n")
variable = classname().methodname (userinput)
print (variable)
4

1 に答える 1

3

あなたはほとんどそこにいます。@staticmethod前に追加するだけdef methodname(value)です;)

または、静的メソッドを使用するつもりがなかった場合は、メソッド名のシグネチャを変更して、1 つの追加パラメーター self ( def methodname (self, value) :) を受け入れ、常にmethodnameインスタンスから呼び出すようにしてください: variable = (classname().methodname (userinput))

于 2013-01-19T22:17:40.953 に答える