2017-01-11 4 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) 

Я предполагаю, что код очень прост и объясняет сам я предполагаю теперь моя проблема, когда я пытаюсь запустить егоCalling класс * простой код *

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

Методам передается объект, которому принадлежит их в качестве первого параметра. По соглашению мы называем это 'self' в Python (но' 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 в print_address()

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

Помните, что методы взять self аргумент неявно. Измените код метода на:

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

Активировано, потому что вы также объяснили _why_. –

+1

@ дана, да, забыл об этом. Исправлено сейчас, спасибо. – lukeg

1

self является недостающим параметром здесь. Функция должна иметь по крайней мере один аргумент, где один из них является self всякий раз, когда в классе:

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

Тогда, чтобы избежать NameError, добавьте self. перед переменными.

Смежные вопросы