2017-01-11 6 views
2
class HouseLocation(): 

    def __init__(self,street_name,x,y): 
     self.street_name=street_name 
     self.x=x 
     self.y=y 

     def print_address(): 
      print '{}: {},{}'.format(street_name,x,y) 

私は、コードは非常にシンプルであり、私はそれを私は、次のエラーメッセージが表示されます通話クラス*簡単なコード*

k=HouseLocation('lol lo', 3,7)

k.print_address()

を実行しようとすると、私は今、私の問題がある を引き受ける自身を説明して想定し

Traceback (most recent call last):

File "", line 1, in

k.print_address()

TypeError: print_address() takes no arguments (1 given)

私が間違っていることを説明してもらえますか?

+1

メソッドにパラメータとして 'self'を追加します – fafl

+1

メソッドは、それらを所有するオブジェクトを最初のパラメータとして渡します。規約では、これをPythonで 'self'と呼んでいます(しかし' def foobar_method(omg_its_me) 'は構文的に有効です)。 'street_name'、' x'、 'y'は' HouseLocation.print_address'の内部で定義されていないことにも注意してください。メソッドは最初の引数として所有者を取得するので、その属性を使用することになりますが、そのように参照する必要があります。 ( 'self.street_name'、' self.x'、 'self.y') –

答えて

1

最初のパラメーターはselfパラメーターである必要があります。これはクラスのインスタンスであり、それに応じてプロパティを取得/設定することができます。

class HouseLocation(): 

    def __init__(self,street_name,x,y): 
     self.street_name=street_name 
     self.x=x 
     self.y=y 

    def print_address(self): 
     print '{}: {},{}'.format(self.street_name,self.x,self.y) 
1

selfは欠けているパラメータであり、すべてのクラスメソッドの最初の引数として渡されます。

def print_address(self): 
    print '{}: {},{}'.format(self.street_name,self.x,self.y) 
1

あなたは方法が暗黙のうちにself引数を取ることを忘れないでくださいself

def print_address(self): 
    print '{}: {},{}'.format(self.street_name, self.x, self.y) 
3

print_address()に渡す必要があります。メソッドコードを次のように変更します。

def print_address(self): 
     print '{}: {},{}'.format(self.street_name,self.x,self.y) 
+0

あなたは_why_についても説明したので、アップしました。 –

+1

@ダナ、ええ、それについて忘れました。今修正しました。 – lukeg

1

selfが欠けています。

def print_address(self): 
     print '{}: {},{}'.format(self.street_name,self.x,self.y) 

そして、変数の前にself.を追加し、NameErrorを避けるために:関数は、それらの一つはクラスでselfたび、少なくとも一つの引数を持っている必要があります。

関連する問題