2016-03-18 4 views
0

В Python я впервые тестировал классы. Когда я использую этот код, я получаю сообщение об ошибке «Это построено не принимает аргументы» в строке 15. Может кто-нибудь, пожалуйста, скажите мне, в чем проблема?Этот конструктор не принимает аргументы

class Triangle: 
    def _init_(self,h,b): 
     self.h = h 
     self.b = b 
    author = 'No one has claimed this rectangle yet' 
    description = 'None' 
    def area(self): 
     return (self.h * self.b)/2 
    def description(self,text): 
     self.description = text 
    def author(self,text): 
     self.author = text 

fred = Triangle(4,5) 
print fred.area() 
+1

INIT с двойным подчеркиванием с обеих сторон, а не только один: '__init__', и not '_init_' – pixis

ответ

0

Ваша ошибка в функции инициализации. Предполагается, что два подчеркивания до и после примерно __init__().

Вот правильный код:

class Triangle: 
    def __init__(self,h,b): 
     self.h = h 
     self.b = b 
    author = 'No one has claimed this rectangle yet' 
    description = 'None' 
    def area(self): 
     return (self.h * self.b)/2 
    def description(self,text): 
     self.description = text 
    def author(self,text): 
     self.author = text 

fred = Triangle(4,5) 
print fred.area() 
+0

Спасибо, это было не очевидно в учебнике, который я использовал – Midataur

2

Вы должны использовать двойные подчеркивания __ для обозначения __init__:

def __init__(self, h, b): 
2

Вы определили свой конструктор, как _init_, когда он должен быть определен как __init__ (обратите внимание на двойное подчеркивание). Python не видит ваш __init__ (как его неправильно называют) и просто принимает конструктор по умолчанию (который не принимает аргументы).

0

Я думаю, что проблема только с синтаксисом вашего конструктора класса, инициализации необходимо два подчеркивания до и после.

Таким образом, вы класс становится

class Triangle: 
    def __init__(self,h,b): 
     self.h = h 
     self.b = b 

    # rest of the class code 

Эта ссылка имеет некоторую информацию об актуальности подчеркиванием в Python: https://shahriar.svbtle.com/underscores-in-python

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