2016-04-18 3 views
0

私は、そのクラス以外のクラス内で作成された関数にアクセスしようとしています。 自己は、それがのように、だけで正常に動作し、関数のパラメータの一つではない場合:のように)クラス外の自己を使用する関数にアクセスする方法

class Dog(): 

    def Bark(): 
     print("woof") 

Marley = Dog 

Marley.Bark() 

しかし、私は樹皮(に自己を追加する場合:

class Dog(): 

    def Bark(self): 
     print("woof") 

    def Bark_lots(self): 
     for I in range(3):  
      self.Bark() 

Marley = Dog 

Marley.Bark_lots() 

その後Pythonは型エラーがスローされます「自己」私はちょうど自分が必要とされている理由について協議し、何それを行うまで検索した

すべて:

はTypeError:1つの必要な位置引数が不足してBark_lots() es。私は明らかに何かを欠いており、過去の経験からはおそらく単純です。この問題についての助けがあれば幸いです。呼び出しの後

(また、私は、私はルールのいずれかを破った場合、私はそれを修正する場所とに私に警告してください、為替/スタックスタックオーバーフローに新しいです。)

+0

「self」のメソッドにアクセスするには、[Class Objects](https://docs.python.org/2/tutorial/classes.html#class-objects)を作成する必要があります。 – AKS

答えて

0

あなたは括弧を配置する必要がありсlass(Dog()Dogではありません):

Marley = Dog() 
Marley.Bark() 
+0

それはシンプルだったので、ありがとう! – Drickken

+0

@Drickken:喜んで助けになる。同じ問題を抱えている他のユーザーを助ける答えを選択します。 – JRazor

+0

するでしょう、Stack Overflowは質問の質問から10分待つことを望んでいます – Drickken

-1

あなたは少し欠けているようです。私はあなたが不適切に機能を呼んでいることに気づいた。関数を呼び出すときに、開閉記号を入力することを忘れないでください。正しい方法があります。

+0

答えを重複しないでください。 – JRazor

-1
class Dog(): 

def Bark(self): 
    print("woof") 

def Bark_lots(self): 
    for I in range(3):  
     self.Bark() 

Marley = Dog() 

Marley.Bark_lots() 

マーレイ=犬()はマーリー=犬

マーレイ=犬異なっている:クラス自体は可変マーリーに割り当てられます。 MarleyはDogというクラスへの参照になります。 我々は以下のような、

m=Dog 
x= m() 
x.bark_lots() '''x's ref will be passed as self to the function''' 

マーリー=犬()使用することができます。ここでは、クラスのオブジェクトを作成しています。あなたは

Marley = Dog() 
Marley.Bark_lots() 

を呼び出すときにオブジェクトマーリーの参照は、自己のparamとみなされます。

+0

説明をありがとうございました。 – Drickken

関連する問題