2017-06-27 12 views
-1

私はPythonでクラスを使用する際に新しいです。私は彼らがどのように動くか理解できません。私は機能を使い慣れていますが、クラス内のアイテムに名前をつけるのは間違っています。Pythonクラスのネーミングはどのように機能しますか?

私はチュートリアルのいずれかから回答を見つけられませんでした。だから誰かがこれを私にできるだけ簡単に説明することができ、間違っていることを教えてください。

はここに私のクラスである - この単純なクラスFPR目標は、この場合にはその数はあなたがここにいくつかの概念的な問題を抱えている5.

class do_math: 

    def __init__(self, num): 
     self.add = num 

    def add(self,num): 
     self.add = num + 1 
     print (self.add) 

x = do_math(5) 

print (x.add) 
+0

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune

+0

どのようにクラスを動作させますか? 'add'メソッドを何度も呼び出すことができるか、クラスコンストラクタに渡された値に1を加えて、更新された値をクラスフィールドに格納しますか? – EsotericVoid

+1

@Prune:テンプレートでもう少し注意してください。この質問にはMCVEが含まれています。それが必要なのは、質問者の混乱のより良い説明です。ほとんどのテンプレートは適用されません。 – user2357112

答えて

0

あり、それに与えられた任意の数に 1を追加することです。まず、addを値または方法にしますか?あなたはそれを両方として使用しています。これにより、最も新しいものが以前のものを削除するために使用されます。要するに、add関数を破棄しました。これは、最初のの理由でプログラムが機能しません。

class do_math: 

    def __init__(self, num): 
     self.value = num 

    def add(self,num): 
     self.value = num + 1 
     print ("self", self.value) 

x = do_math(5) 

print ("x", x.value) 

あなたがないを持って注意addメソッドを呼び出した - ないあなたの元のコードではなく、上記の私の単純な更新で。残りの問題を解明するのに十分ですか?別の問題は、addは値numを期待していますが、この値は何ですか?オブジェクトには既に5が保持されていて、+1はルーチンにハードコードされています...他に何が必要ですか?それはどこから来ますか?

そうでない場合は、さらに簡単なクラスにバックアップします。初期化と1行の追加を行います。次のステップに進む前に各ステップを理解しておいてください。

0

私は少しあなたのコードを変更した:

#!/usr/bin/python3 

class DoMath: 
    def __init__(self, num): 
     self.num = num 

    def add(self, num): 
     self.num = self.num + num 
     print(self.num) 

x = DoMath(5) 
x.add(2) # prints 7 
x.add(3) # prints 10 
x.add(4) # prints 14 

ラインx = DoMath(5)がクラスDoMathのインスタンスを作成し、変数xに割り当てます。番号5は、コンストラクタの引数です。次のように

コンストラクタが定義されている:

def __init__(self, num): 
     self.num = num 

これはその値が属性/インスタンス変数(self.num)に割り当てるつのパラメータ、numを有しています。

x.add(2)はメソッド呼び出しです。 DoMathのインスタンスのメソッドaddを引数2で呼び出します。次のように

方法addが定義される:

def add(self, num): 
     self.num = self.num + num 
     print(self.num) 

これは引数を取り、そのインスタンス変数に追加し、結果を印刷します。

関連する問題