2016-06-28 5 views
-1

Мне нужно вернуться, чтобы дать то, что дает мне последняя печатная строка. Внизу я вывел класс со значениями. Также рекомендуется указывать, как улучшить код.Нужно вернуться в соответствие с тем, что показывает мне печать

class Building: 
    def __init__(self, south, west, width_WE, width_NS, height=10): 
     # making variables non-local 
     self.south=int(south) 
     self.west=int(west) 
     self.width_WE=int(width_WE) 
     self.width_NS=int(width_NS) 
     self.height=height 
     self.d={} 
     self.d['north-east']=(south+width_NS,west+width_WE) 
     self.d['south-east']=(south,west+width_WE) 
     self.d['south-west']=(south,west) 
     self.d['north-west']=(south+width_NS,west) 
     self.wwe=width_WE 
     self.wns=width_NS 
     self.height=10 
    def corner(self): # gives co-ordinates of the corners 
     print(self.d) 
    def area (self): # gives area 
     print(self.wwe*self.wns) 
     return(self.wwe*self.wns) 
    def volume(self): #gives volume 
     print(self.wwe*self.wns*self.height) 
    def __repr__(self):  # I dont know what to call it but answer should be''Building(10, 10, 1, 2, 2)'' 
     print ("Building(%s,%s,%s,%s,%s)"%(self.south, self.west, self.width_WE, self.width_NS,"10")) 
     #return ("Building(%s,%s,%s,%s,%s)"%(self.south, self.west, self.width_WE, self.width_NS,"10")) 

abc = Building(10, 10, 1, 2, 2) 
abc.corner() 
abc.area() 
abc.volume() 
+0

И что вы получаете вместо этого? Обратите внимание, что 'str.format' является более современным, и вы, вероятно, должны использовать'% r', чтобы получить представление аргументов. – jonrsharpe

+0

Это помогло вместе с некоторыми другими изменениями. Теперь у меня другая проблема. :/ –

+0

yep, ну, добро пожаловать в программирование. Просто решите каждую маленькую проблему, и в конце концов ее не останется. – jonrsharpe

ответ

1

Использование __str__ вместо:

def __str__(self): 
     return "Building({0},{1},{2},{3},{4})".format(self.south, self.west, self.width_WE, self.width_NS,"10") 
    def __repr__(self):   
     __str__() 

Кроме того, вы должны, вероятно, не устанавливая height явно, если вы собираетесь передать его в качестве аргумента:

... 
    self.height=10 
    ... 

следует читать:

... 
    self.height=height 
    ... 
+0

Мне нужно указать его, когда тестовые примеры передают только 4 аргумента. Когда они передают все 5, я хочу, чтобы высота принимала 5-е значение. Else по умолчанию 10. Это проблема, с которой я столкнулся сейчас. –

+0

Имея 'height = 10' в аргументах конструктора, он делает именно это. Вам не нужно указывать его в явном виде внутри конструктора. И я заметил, что по какой-то причине вы инициализируете 'self.height' дважды. Просто сохраните первый 'self.height = height' и удалите' self.height = 10'. Это должно дать вам поведение, которое вы ищете. – Bazinga

+0

Также не забудьте отметить этот ответ как ПРАВИЛЬНО, если решение сработало для вас. :) – Bazinga

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

  • Нет связанных вопросов^_^